Kelas seperti Stream
, StreamReader
, StreamWriter
dll mengimplementasikan IDisposable
interface. Itu berarti, kita dapat memanggil Dispose()
metode pada objek dari kelas-kelas ini. Mereka juga mendefinisikan public
metode yang disebut Close()
. Sekarang membingungkan saya, seperti apa yang harus saya panggil setelah saya selesai dengan benda? Bagaimana jika saya memanggil keduanya?
Kode saya saat ini adalah:
using (Stream responseStream = response.GetResponseStream())
{
using (StreamReader reader = new StreamReader(responseStream))
{
using (StreamWriter writer = new StreamWriter(filename))
{
int chunkSize = 1024;
while (!reader.EndOfStream)
{
char[] buffer = new char[chunkSize];
int count = reader.Read(buffer, 0, chunkSize);
if (count != 0)
{
writer.Write(buffer, 0, count);
}
}
writer.Close();
}
reader.Close();
}
}
Seperti yang Anda lihat, saya telah menulis using()
konstruk, yang secara otomatis memanggil Dispose()
metode pada setiap objek. Tapi saya juga menyebut Close()
metode. Apakah tepat?
Tolong sarankan saya praktik terbaik saat menggunakan objek aliran. :-)
Contoh MSDN tidak menggunakan using()
konstruk, dan memanggil Close()
metode:
Apakah itu baik?
using (MemoryStream ms1 = new MemoryStream(), ms2 = new MemoryStream()) { }
. Maksud saya seperti ini di mana Anda dapat mendefinisikan kembali tipe:using (MemoryStream ms = new MemoryStream()) using (FileStream fs = File.OpenRead("c:\\file.txt")) { }