Klassen wie Stream, StreamReader, StreamWriterusw. Geräte - IDisposableSchnittstelle. Das heißt, wir können anrufenDispose() Methoden für Objekte dieser Klassen . Sie haben auch eine publicMethode 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")) { }