.NET - Verschachtelte using-Anweisungen durch single using-Anweisung ersetzen
Wenn Sie auf einen C # -Code wie diesen mit verschachtelten Anweisungen / Ressourcen gestoßen sind:
using (var response = (HttpWebResponse)request.GetResponse())
{
using (var responseStream = response.GetResponseStream())
{
using (var reader = new BinaryReader(responseStream))
{
// do something with reader
}
}
}
Ist es sicher, es durch so etwas zu ersetzen?
using (var reader = new BinaryReader(((HttpWebResponse)request.GetResponse()).GetResponseStream()))
{
// do something with reader
}
Das obige Beispiel ist nur ein Beispiel für verschachtelte verfügbare Ressourcen. Verzeihen Sie mir, wenn die Verwendung nicht genau korrekt ist. Ich bin neugierig, ob Sie die äußerste Ressource (in diesem Fall den BinaryReader) entsorgen, ob sie ihre untergeordneten Elemente rekursiv für Sie entsorgen wird oder ob Sie jede "Ebene" explizit mit separaten using-Anweisungen entsorgen müssen. Z.B. Wenn Sie den BinaryReader entsorgen, soll er den Antwortstrom entsorgen, der wiederum die Antwort entsorgt? Wenn ich über diesen letzten Satz nachdenke, denke ich, dass Sie tatsächlich die separaten using-Anweisungen benötigen, da es keine Möglichkeit gibt, zu garantieren, dass ein Wrapper-Objekt über das innere Objekt verfügt. Ist das richtig