Objek Strim: Close() lwn. Dispose()
Apabila bekerja dengan objek strim seperti Stream, StreamReader dan StreamWriter, pembangun selalunya soalan sama ada untuk memanggil Close() atau Dispose() selepas menamatkan operasi. Kedua-dua kaedah mengeluarkan sumber yang berkaitan dengan objek secara berkesan, tetapi memahami perbezaannya adalah penting untuk amalan terbaik.
Kesetaraan Tutup() dan Buang()
Dengan menganalisis pelaksanaan daripada Close() dalam kedua-dua StreamReader dan StreamWriter menggunakan alat seperti Reflector.NET, menjadi jelas bahawa memanggil Close() akhirnya menggunakan kaedah Dispose() dengan parameter true. Ini menunjukkan bahawa kedua-dua Close() dan Dispose() melakukan operasi pembersihan asas yang sama.
Amalan Terbaik untuk Pengendalian Objek Strim
Memandangkan kesetaraan Close() dan Dispose(), keputusan kaedah untuk digunakan bergantung pada kebolehbacaan dan keutamaan pengendalian ralat. Walaupun Close() adalah mudah, menggunakan Dispose() mungkin memberikan fleksibiliti tambahan dalam mengendalikan kemungkinan pengecualian.
Menggunakan Kedua-dua Close() dan Dispose()
Sementara itu berlebihan untuk memanggil Close() dan Dispose() pada objek yang sama, berbuat demikian tidak akan menjejaskan tingkah laku atau mengakibatkan sebarang ralat. Oleh itu, adalah boleh diterima untuk mengikuti amalan memanggil Dispose() selepas menggunakan objek strim walaupun Close() telah pun dipanggil.
Penggunaan Disyorkan:
Untuk kebolehbacaan kod yang optimum dan pengendalian ralat, adalah disyorkan untuk menggunakan pernyataan using() untuk objek strim. Ini memastikan sumber dikeluarkan dengan betul walaupun terdapat pengecualian. Selain itu, adalah dicadangkan untuk memanggil Close() secara eksplisit dalam blok using() untuk menyediakan kebolehbacaan kod yang lebih baik.
Contoh:
using (var stream = ...) { // code stream.Close(); }
Dengan mengikuti yang terbaik ini amalan, pembangun boleh mengendalikan objek strim dengan berkesan, memastikan pembersihan sumber yang betul dan meningkatkan kebolehbacaan kod.
Atas ialah kandungan terperinci Objek Strim: Patutkah Saya Gunakan `Close()` atau `Dispose()`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!