C # 'da using
ifade, çöp toplayıcısını beklemeden kaynakları belirleyici bir şekilde atmak için kullanılır. Örneğin, aşağıdakiler için kullanılabilir:
SQL komutlarını veya bağlantılarını imha edin,
Akışları kapatın, temeldeki kaynağı bir dosya gibi serbest bırakın,
Ücretsiz GDI + öğeleri,
vb.
Bertaraf edilecek using
hiçbir şeyin olmadığı durumlarda daha fazla kullanıldığını fark ettim , ancak arayanın using
iki ayrı komut yerine bir blok yazmasının daha uygun olduğu yerlerde .
Örnekler:
Stack Overflow ekibi tarafından yazılan MiniProfiler ,
using
blokları profile göstermek için kullanır :using (profiler.Step("Name goes here")) { this.DoSomethingUseful(i - 1); }
Alternatif bir yaklaşım iki bloğa sahip olmak olacaktır:
var p = profiler.Start("Name goes here"); this.DoSomethingUseful(i - 1); profiler.Stop(p);
Başka bir yaklaşım eylemleri kullanmak olacaktır:
profiler.Step("Name goes here", () => this.DoSomethingUseful(i - 1));
ASP.NET MVC ayrıca
using
formlar için seçti :<% using (Html.BeginForm()) { %> <label for="firstName">Name:</label> <%= Html.TextBox("name")%> <input type="submit" value="Save" /> <% } %>
Böyle bir kullanım uygun mu? Birkaç dezavantaj olduğu göz önüne alındığında, nasıl gerekçelendirilir:
Yeni başlayanlar kaybolacaktı, çünkü bu tür kullanım kitaplarda ve dil spesifikasyonlarında açıklananla uyuşmuyor,
Kod anlamlı olmalıdır. Burada, ifade etme sıkıntısı çekiyor, çünkü uygun kullanımı,
using
arkasında, çöp toplayıcısını beklemeden serbest bırakılması gereken bir akış, ağ bağlantısı veya veritabanı gibi bir kaynak olduğunu göstermek.
using
: İkinci ifadenin (örn.profiler.Stop(p)
) İstisnalar ve kontrol akışı karşısında yürütüleceği garanti edilmez.