Penutup StreamReader dan strim asas: penerangan terperinci dan amalan terbaik
Apabila bekerja dengan strim dalam pengaturcaraan, anda biasanya menggunakan StreamReader
untuk melaksanakan tugas tertentu, seperti membaca baris daripada fail teks. Walau bagaimanapun, soalan biasa ialah: adakah pelepasan objek StreamReader
menjejaskan penutupan strim asas?
Jawapan: Ya.
Keluaran StreamReader
(serta StreamWriter
, BinaryReader
dan BinaryWriter
) mencetuskan penutupan dan keluaran strim asas. Ini berlaku apabila kaedah Dispose
objek pembaca dan penulis ini dipanggil secara eksplisit. Walau bagaimanapun, kelas ini tidak membebaskan aliran melalui kutipan sampah. Oleh itu, pastikan anda mengeluarkan contoh pembaca/penulis secara manual menggunakan pernyataan using
untuk memastikan strim ditutup dengan betul.
Amalan Terbaik:
Untuk memastikan keluaran strim yang konsisten, adalah disyorkan untuk terus menggunakan kenyataan using
untuk mengurus strim itu sendiri. Gelagat keluaran yang diingini boleh dicapai dengan elegan dengan menggunakan pernyataan using
bersarang untuk mengurus strim dan pembaca serta penulis, seperti yang ditunjukkan di bawah:
<code class="language-csharp">using (Stream stream = ...) using (StreamReader reader = new StreamReader(stream, Encoding.Whatever)) { // 使用 reader 读取数据 }</code>
Walaupun pernyataan stream
untuk using
mungkin kelihatan berlebihan, pendekatan ini amat disyorkan memandangkan pengecualian yang mungkin berlaku semasa StreamReader
instantiasi. Melakukan ini memastikan bahawa strim dikeluarkan dengan betul walaupun StreamReader
dialih keluar atau kemudian diganti dengan menggunakan strim secara terus.
Atas ialah kandungan terperinci Adakah Melupuskan StreamReader Juga Menutup Aliran Dasar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!