Klassen wie Stream
, StreamReader
, StreamWriter
usw. Geräte - IDisposable
Schnittstelle. Das heißt, wir können anrufenDispose()
Methoden für Objekte dieser Klassen . Sie haben auch eine public
Methode namens aufgerufen Close()
. Das verwirrt mich, was soll ich nennen, wenn ich mit Objekten fertig bin? Was ist, wenn ich beide anrufe?
Mein aktueller Code lautet:
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();
}
}
Wie Sie sehen, habe ich using()
Konstrukte geschrieben , die automatisch aufrufenDispose()
Methoden für jedes Objekt . Ich nenne aber auch Close()
Methoden. Ist es richtig?
Bitte schlagen Sie mir die Best Practices für die Verwendung von Stream-Objekten vor. :-)
Das MSDN-Beispiel verwendet keine using()
Konstrukte und ruft die Close()
Methode auf:
Ist es gut?
using (MemoryStream ms1 = new MemoryStream(), ms2 = new MemoryStream()) { }
. Ich meine so, wo Sie den Typ neu definieren können:using (MemoryStream ms = new MemoryStream()) using (FileStream fs = File.OpenRead("c:\\file.txt")) { }