Dalam C #, using
pernyataan digunakan untuk membuang sumber daya secara deterministik tanpa menunggu pemulung. Misalnya, ini dapat digunakan untuk:
Buang perintah atau koneksi SQL,
Tutup aliran, membebaskan sumber yang mendasarinya seperti file,
Elemen GDI + gratis,
dll.
Saya perhatikan bahwa using
semakin sering digunakan dalam kasus-kasus di mana tidak ada yang dibuang, tetapi di mana lebih mudah bagi penelepon untuk menulis using
blok daripada dua perintah terpisah.
Contoh:
MiniProfiler , ditulis oleh tim Stack Overflow, digunakan
using
untuk menunjukkan blok ke profil:using (profiler.Step("Name goes here")) { this.DoSomethingUseful(i - 1); }
Satu pendekatan alternatif adalah memiliki dua blok:
var p = profiler.Start("Name goes here"); this.DoSomethingUseful(i - 1); profiler.Stop(p);
Pendekatan lain adalah menggunakan tindakan:
profiler.Step("Name goes here", () => this.DoSomethingUseful(i - 1));
ASP.NET MVC juga memilih
using
formulir:<% using (Html.BeginForm()) { %> <label for="firstName">Name:</label> <%= Html.TextBox("name")%> <input type="submit" value="Save" /> <% } %>
Apakah penggunaan seperti itu tepat? Cara membenarkannya, mengingat bahwa ada beberapa kelemahan:
Pemula akan hilang, karena penggunaan tersebut tidak sesuai dengan yang dijelaskan dalam buku dan spesifikasi bahasa,
Kode harus ekspresif. Di sini, ekspresifitas menderita, karena penggunaan yang tepat
using
adalah untuk menunjukkan bahwa di belakang, ada sumber daya, seperti aliran, koneksi jaringan atau database yang harus dirilis tanpa menunggu pengumpul sampah.
using
: Pernyataan yang terakhir (misalnyaprofiler.Stop(p)
) tidak dijamin akan dieksekusi dalam menghadapi pengecualian dan aliran kontrol.