2009-11-20 44 views
12

tôi muốn biết việc sử dụng từ khóa "đang sử dụng" trong C#, tôi là gì mới .. khi chúng tôi cần sử dụng từ khoá "đang sử dụng" .. tôi googled nó, không thể hài lòng với câu trả lời. vẫn tôi muốn biết một số chi tiết từ bạn Geeks ..sử dụng từ khóa "đang sử dụng" trong C#

Cảm ơn

+6

Sử dụng từ khóa 'using' có thể hữu ích. Sử dụng 'using' giúp ngăn ngừa các vấn đề khi sử dụng các ngoại lệ. Sử dụng 'using' có thể giúp bạn sử dụng các đối tượng dùng một lần một cách hữu ích hơn. Sử dụng 'cách sử dụng' khác sẽ giúp bạn sử dụng không gian tên hoặc nhập tên. Khá hữu dụng. –

+2

LOL! A * hữu ích * bình luận, Michael! : D –

+0

Cũng thấy: [sử dụng: Từ khóa Wonder C#] (http://technowide.net/2014/12/29/using-wonder-c-keyword/) –

Trả lời

25

Hai công dụng:

  • Sử dụng chỉ, ví dụ

    using System; 
    using System.IO; 
    using WinForms = global::System.Windows.Forms; 
    using WinButton = WinForms::Button; 
    

    Chúng được sử dụng để nhập không gian tên (hoặc tạo bí danh cho không gian tên hoặc loại). Các tệp này nằm ở đầu tệp, trước bất kỳ khai báo nào.

  • Sử dụng báo cáo ví dụ:

    using (Stream input = File.OpenRead(filename)) 
    { 
        ... 
    } 
    

    này chỉ có thể được sử dụng với các loại mà thực hiện IDisposable, và là cú pháp đường cho một thử/cuối cùng khối trong đó kêu gọi Dispose trong khối finally. Điều này được sử dụng để đơn giản hóa việc quản lý tài nguyên.

+0

ý bạn là .. khi chúng tôi tạo đối tượng bằng cách sử dụng mới hoặc một số điều khác tốt của nó để sử dụng "sử dụng" đúng .. vì vậy chúng tôi không cần phải vứt bỏ hoặc đóng chúng một cách rõ ràng phải không? .. – Naruto

+3

@GrabIt, như Jon nói chỉ những người thực hiện IDisposable. – ParmesanCodice

+0

Oh..fine i got it .. Cảm ơn u – Naruto

11

sử dụng có hai nghĩa trong C#:

  • sử dụng cho IDisposable có nghĩa là khi khối của việc sử dụng đầu Dispose phương thức sẽ được gọi.
  • sử dụng cho không gian tên có nghĩa là các loại từ không gian tên được nhập sẽ được tham chiếu trong mã.

dụ cơ bản về cách sử dụng khối hoạt động:

A "dummy" lớp dùng một lần:

public class DisposableClass : IDisposable 
{ 
    public static bool WasDisposed { get; private set;} 

    public void Dispose() 
    { 
     WasDisposed = true; 
    } 
} 

Một số mã rất đơn giản thể hiện khi Dispose được gọi là:

[Test] 
public void DisposeSample() 
{ 
    using (var disposableClass = new DisposableClass()) 
    { 
     Assert.IsFalse(DisposableClass.WasDisposed); 
    } 

    Assert.IsTrue(DisposableClass.WasDisposed); 
} 
2

Khá chắc chắn sẽ có một bản sao của một nơi nào đó ở đây .... tuy nhiên, trong ngắn hạn các từ khóa sử dụng được sử dụng để xác định phạm vi của đối tượng bạn đang tạo. Đối tượng được xử lý khi nó thoát khỏi khối đang sử dụng, tức là Vứt bỏ được gọi tự động.

Xem using Statement (C#) để biết thêm chi tiết.

2

Nó cung cấp cho bạn một cách dễ dàng để dọn sạch tài nguyên sau khi bạn đã hoàn tất với chúng. Với sử dụng cấu trúc, khi bạn đã hoàn tất sử dụng tài nguyên, chúng sẽ được giải phóng tự động. Nó thậm chí làm sạch các tài nguyên trong trường hợp ngoại lệ.

3

Có ba công dụng:

Tôi không tin rằng tôi có thể giải thích rõ hơn các điều khoản MSDN một cách chung chung. Nếu bạn gặp khó khăn khi hiểu chúng, bạn nên đăng câu hỏi cụ thể hơn về chi tiết bạn không hiểu.

1

Có hai công dụng của 'bằng' từ khóa:

  • như một sử dụng chỉ, cho phép việc sử dụng các loại trong một không gian tên. Ví dụ: using System.Web
  • như sử dụng tuyên bố , chỉ có thể cho các loại được kế thừa từ IDisposable. Việc này sẽ tự động gọi phương thức Dispose() trên đối tượng sau khi sử dụng câu lệnh nằm ngoài phạm vi, do đó bạn không phải lo lắng về việc tự động gọi phương thức này, hoặc gọi Close() về kết nối cơ sở dữ liệu, ví dụ:

    sử dụng (MySqlConnection) kết nối = new MySqlConnection()) { // .. }

3

"sử dụng" từ khóa cũng có thể được sử dụng để tạo bí danh loại. Đây là một bí danh cho từ điển. Cách tiếp cận này có thể giúp bạn tiết kiệm một số cách gõ :)

Ví dụ,

using Item = System.Collections.Generic.Dictionary<string, string>; 
namespace Sample 
{ 
    using Records = Dictionary<int, Item>; 
    public class Controller 
    { 
     Records recordDictionary = new Records(); 
    } 
} 
6

tôi giả you'r nói về khối điều khiển sử dụng và không phải là sử dụng [namespace] tuyên bố. Về cơ bản, từ khóa là cú pháp đường để khởi tạo và xử lý một cách an toàn các đối tượng. Nó hoạt động với bất kỳ đối tượng nào triển khai IDisposable. Sau đây:

using(MyType obj = new MyType()) 
{ 
    ... do stuff. 
} 

tương đương với:

MyType obj = new MyType(); 
try 
{ 
    .... do stuff 
} 
finally 
{ 
    if(obj != null) 
    { 
     obj.Dispose(); 
    } 
} 
+0

đánh bại tôi sau 10 giây! – RickNZ

+0

@RickNz - lần sau :) –

0

Có hai mục đích sử dụng khác nhau của sử dụng từ khóa trong C#:

  1. Để tuyên bố phạm vi gói ngầm, ví dụ "using System;"
  2. Để gây ra phương thức Dispose() của đối tượng IDisposable được gọi.

Trong trường hợp sau, using(myVar) {} là viết tắt cho:

IDisposable disposable = (IDisposable)myVar; 
try 
{ 
    // your code here 
} 
finally 
{ 
    if (disposable != null) 
     disposable.Dispose(); 
} 
0

sử dụng có thể được sử dụng để:

  • "nhập khẩu" không gian tên, tức là sử dụng họ
  • tạo bí danh cho một loại (như typedef quay lại trong C++ ngày)
  • vứt bỏ một đối tượng ngay lập tức sau khi sử dụng
0

sử dụng từ khóa này có thể được sử dụng để nhập (Kết hợp) một không gian tên hoặc thư viện với chương trình của chúng tôi. một số điều của nó giống như một tài liệu tham khảo

Ex: using System.IO

Điều này có nghĩa chúng tôi sẽ sử dụng một số chức năng hiện diện trong thư viện mà

Bạn có thể viết thư viện riêng của bạn và nhập nó sử dụng câu lệnh sử dụng . Ex:

namespace MyProject.MyNamspace 
{ 
public class MyCustomClass 
{ 
    public static string MyFunctionToSmile() 
    { 
    return "He he he heeee"; 
    } 
} 

}

và trong trang # c ur, sử dụng này

using MyProject.MyNamspace 

public class MyClass 
{ 
protected void Page_Load(object sender, EventArgs e) 
{ 
    Response.Write(MyCustomClass.MyFunctionToSmile()); 
} 
} 

mát ...!

4

Có hai cách sử dụng từ khóa.

Một là khi bạn quá lười để nhập System.Web.UI.WebControls.TextBox bạn thêm using System.Web.UI.WebControls ở đầu tệp mã và từ đó chỉ viết TextBox. Đó là tất cả những gì nó làm - rút ngắn mã bạn phải viết (và làm cho nó dễ đọc hơn).

Cách khác phải làm với giao diện IDisposable. Giao diện này dành cho các đối tượng cần được dọn dẹp sau khi bạn sử dụng chúng. Giống như các tệp, cần phải đóng hoặc kết nối DB hoặc loại nội dung đó. Bạn có thể chỉ đơn giản là đặt một cuộc gọi đến phương thức Dispose() cho mình bất cứ nơi nào cần thiết, nhưng điều này làm cho nó dễ dàng hơn.Nói tóm lại, đây:

using (var X = new MyObject()) 
{ 
    // Code goes here 
} 

tương đương với điều này:

var X = new MyObject(); 
try 
{ 
    // Code goes here 
} 
finally 
{ 
    if (X != null) 
     X.Dispose(); 
} 

Một lần nữa - đó là một viết tắt cho một đoạn mã để đảm bảo rằng không có vấn đề gì xảy ra, phương pháp Dispose() sẽ được gọi. Ngay cả khi mã của bạn ném ngoại lệ hoặc bạn return ra khỏi phương thức, phương thức Dispose() sẽ được gọi. Điều này đảm bảo rằng bạn không vô tình để lại tệp mở hoặc một cái gì đó.

Nói chung, nếu bạn đã từng sử dụng một đối tượng triển khai giao diện IDisposable, hãy đặt nó trong khối using.

Các vấn đề liên quan