Rumah >pembangunan bahagian belakang >C++ >Adakah Menggunakan `menggunakan` dan `IDDisposable` untuk Pengurusan Negeri dalam C# merupakan Penyalahgunaan?
Menggunakan IDisposable untuk Pengurusan Negeri
Dalam C , corak biasa melibatkan penggunaan pembina dan pemusnah kelas A untuk mengendalikan keadaan masuk dan keluar untuk kelas B, memastikan keadaan yang diketahui apabila meninggalkan skop. Ini bukan RAII tulen, tetapi amalan yang telah ditetapkan.
Dalam C#, pendekatan serupa boleh digunakan dengan menggunakan dan IDisposable. Walau bagaimanapun, penggunaan ini menimbulkan persoalan:
Soalan: Adakah menyalahgunakan penggunaan dan IDisposable sebagai cara untuk mendapatkan "tingkah laku terskop" untuk keselamatan pengecualian?
Jawapan:
Sesetengah pendapat menganggap penggunaan penggunaan dan IDisposable ini sebagai penderaan. Berikut ialah sebabnya:
Sebagai contoh, pertimbangkan perkara berikut kod:
{ // Unlock the frobble this.Frobble.Unlock(); try { // May throw Foo(); this.Frobble.Fiddle(); Bar(); } finally { // Lock the frobble this.Frobble.Lock(); } }
Kod ini terdedah kepada masalah yang dilemparkan pengecualian selepas buka kunci tetapi sebelum memasuki blok cuba akan membiarkan frobble tidak berkunci. Menggunakan penggunaan untuk mengendalikan perubahan keadaan ini akan menjadikan kerentanan ini lebih sukar untuk dikesan.
Oleh itu, secara amnya disyorkan untuk menggunakan penggunaan untuk tujuan pengurusan sumber yang dimaksudkan dan mengelakkan penggunaannya untuk pengurusan negeri.
Atas ialah kandungan terperinci Adakah Menggunakan `menggunakan` dan `IDDisposable` untuk Pengurusan Negeri dalam C# merupakan Penyalahgunaan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!