การเรียนการสอนเช่นStream
, StreamReader
, StreamWriter
ฯลฯ ดำเนินการIDisposable
อินเตอร์เฟซ นั่นหมายความว่าเราสามารถเรียกDispose()
ใช้เมธอดบนวัตถุของคลาสเหล่านี้ พวกเขายังได้กำหนดวิธีการที่เรียกว่าpublic
Close()
ทีนี้ฉันจะโทรไปหาอะไรเมื่อฉันทำกับวัตถุแล้ว ถ้าฉันโทรหาทั้งคู่
รหัสปัจจุบันของฉันคือ:
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();
}
}
อย่างที่คุณเห็นฉันได้เขียนusing()
โครงสร้างซึ่งเรียกDispose()
วิธีการในแต่ละวัตถุโดยอัตโนมัติ แต่ฉันก็เรียกClose()
วิธีการเช่นกัน ถูกต้องหรือไม่
กรุณาแนะนำฉันแนวทางปฏิบัติที่ดีที่สุดเมื่อใช้วัตถุกระแส :-)
ตัวอย่าง MSDN ไม่ได้ใช้using()
โครงสร้างและClose()
วิธีการโทร:
ดีไหม
using (MemoryStream ms1 = new MemoryStream(), ms2 = new MemoryStream()) { }
ประเภท: ฉันหมายถึงสิ่งนี้ที่คุณสามารถกำหนดประเภทใหม่ได้:using (MemoryStream ms = new MemoryStream()) using (FileStream fs = File.OpenRead("c:\\file.txt")) { }