Rumah > pembangunan bahagian belakang > C++ > Close() atau Dispose(): Apakah Amalan Terbaik untuk Pelupusan Objek Strim dalam C#?

Close() atau Dispose(): Apakah Amalan Terbaik untuk Pelupusan Objek Strim dalam C#?

Barbara Streisand
Lepaskan: 2025-01-04 13:14:40
asal
563 orang telah melayarinya

Close() or Dispose(): What's the Best Practice for Stream Object Disposal in C#?

Amalan Terbaik untuk Pelupusan Objek Strim

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() vs. Dispose()

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.

Pelaksanaan dalam StreamReader dan StreamWriter

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.

Penggunaan Disyorkan

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();
}
Salin selepas log masuk

Pendekatan ini menggabungkan kelebihan kedua-duanya kaedah:

  • Menggunakan pernyataan: Memastikan pelupusan automatik dan mengelakkan kebocoran sumber.
  • Strim eksplisit.Close(): Memberikan kejelasan visual dan menekankan pembilasan data sebelum ini pelupusan.

Contoh MSDN

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan