Trong C #, using
câu lệnh được sử dụng để xử lý theo cách xác định các tài nguyên mà không cần chờ người thu gom rác. Ví dụ, nó có thể được sử dụng để:
Loại bỏ các lệnh hoặc kết nối SQL,
Đóng luồng, giải phóng nguồn cơ bản như tệp,
Các yếu tố GDI + miễn phí,
Vân vân.
Tôi nhận thấy rằng nó using
được sử dụng ngày càng nhiều trong trường hợp không có gì để xử lý, nhưng ở đó người gọi sẽ thuận tiện hơn khi viết một using
khối thay vì hai lệnh riêng biệt.
Ví dụ:
MiniProfiler , được viết bởi nhóm Stack Overflow, sử dụng
using
để biểu thị các khối vào hồ sơ:using (profiler.Step("Name goes here")) { this.DoSomethingUseful(i - 1); }
Một cách tiếp cận khác là có hai khối:
var p = profiler.Start("Name goes here"); this.DoSomethingUseful(i - 1); profiler.Stop(p);
Một cách tiếp cận khác là sử dụng các hành động:
profiler.Step("Name goes here", () => this.DoSomethingUseful(i - 1));
ASP.NET MVC cũng được chọn
using
cho các hình thức:<% using (Html.BeginForm()) { %> <label for="firstName">Name:</label> <%= Html.TextBox("name")%> <input type="submit" value="Save" /> <% } %>
Sử dụng như vậy có phù hợp không? Làm thế nào để biện minh cho nó, cho rằng có một số nhược điểm:
Người mới bắt đầu sẽ bị mất, vì cách sử dụng như vậy không tương ứng với cách sử dụng được giải thích trong sách và đặc tả ngôn ngữ,
Các mã nên được biểu cảm. Ở đây, tính biểu cảm bị ảnh hưởng, vì cách sử dụng thích hợp
using
là cho thấy đằng sau, có một tài nguyên, như luồng, kết nối mạng hoặc cơ sở dữ liệu sẽ được phát hành mà không cần chờ người thu gom rác.
using
: Câu lệnh sau (ví dụprofiler.Stop(p)
) không được đảm bảo để được thực thi khi đối mặt với các ngoại lệ và luồng điều khiển.