2010-03-29 23 views
10

Khi tôi nói điều này.NET sử dụng khối và trả lại; từ khóa

using (Entities db = new Entities()) 
{ 
    return db.TableName.AsQueryable().ToList(); 
} 

Tôi từng vượt qua các chức năng của việc sử dụng khối kể từ khi tôi trở lại một cái gì đó, và các lối ra phương pháp trước khi thoát khỏi khối sử dụng, vì vậy tôi nghĩ rằng khối sử dụng sẽ không hề khiến nó mục đích và xử lý tài nguyên.

Điều này có đúng không?

Trả lời

15

Bạn không chính xác; nó sẽ được xử lý.

Các using tuyên bố biên dịch đến một khối try/finally rằng disposes đối tượng ban đầu trong khối finally.
finally khối là luôn thực hiện, ngay cả khi mã bên trong khối try trả lại giá trị hoặc đã ném ngoại lệ.

+0

Cảm ơn bạn :) Tôi đã sợ rằng mã của tôi sẽ được thực hiện niềm vui của –

+2

Cuối cùng khối không * luôn * thực thi;) http://thedailywtf.com/Comments/My-Tales.aspx – R0MANARMY

+0

Uhm ok yeap. Tôi đã nhấp :) –

3

using tuyên bố sẽ gọi Dispose đối tượng db trước khi trả về giá trị.

1

tuyên bố sử dụng của bạn thực sự sẽ thành công. Nó là tương tự như sau (đó là những gì các biên dịch C# sẽ dịch các câu lệnh using thành:

Entities db = new Entities(); 
try 
{ 
    return db.TableName.AsQueryable().ToList(); 
} 
finally 
{ 
    ((IDisposable)db).Dispose(); 
} 
Các vấn đề liên quan