Apabila bekerja dengan objek strim seperti Stream, StreamReader dan StreamWriter, adalah penting untuk mempertimbangkan pendekatan yang sesuai untuk pelupusan objek. Kedua-dua kaedah Close() dan Dispose() tersedia, tetapi semantik dan konvensyen di sekeliling penggunaannya berbeza-beza.
Close() Method
Kaedah Close() membuang sebarang data penimbal daripada strim dan mengeluarkan sebarang sumber sistem yang digunakannya. Ini adalah operasi biasa dan membantu memastikan integriti data dengan memaksa tulis balik serta-merta.
Kaedah Dispose()
Kaedah Dispose() mengikut antara muka IDisposable dan adalah bertujuan untuk pembersihan sumber terurus. Ia memanggil kaedah Dispose(bool disposing) yang dilindungi, yang secara dalaman memanggil Close() dan melaksanakan tugas pembersihan tambahan seperti membebaskan sumber terurus.
Mengikut kod yang diperiksa menggunakan Reflector.NET, kaedah Close() dalam StreamReader dan StreamWriter secara dalaman memanggil Dispose(true). Oleh itu, memanggil mana-mana kaedah akan mencetuskan kedua-dua operasi pembilasan dan pembersihan.
Berdasarkan pemahaman Close() dan Dispose(), amalan terbaik yang disyorkan ialah menggunakan kedua-dua kaedah sebagai berikut:
using (var stream = ...) { // Perform operations on the stream stream.Close(); }
Pendekatan ini menggabungkan kelebihan kedua-duanya kaedah:
Contoh MSDN yang dirujuk dalam soalan menggunakan Close() tanpa menggunakan(), yang merupakan pendekatan yang sah tetapi ketinggalan zaman. Amalan yang disyorkan yang diterangkan di atas meningkatkan kebolehbacaan dan keselamatan kod.
Atas ialah kandungan terperinci Close() atau Dispose(): Apakah Amalan Terbaik untuk Pelupusan Objek Strim dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!