Ich benutze oft die "Verwendung" Block die Objekte zu entsorgen. Heute verwende ich HttpWebRequest, um Daten zu veröffentlichen, und ich fühle mich zwischen zwei Methoden verwirrt.verwirrt bei der Verwendung von "using-Block" - C#
Methode 1:
var request = (HttpWebRequest)WebRequest.Create("http://www...");
using (var writer = new StreamWriter(request.GetRequestStream()))
{
writer.Write(JsonConvert.SerializeObject(content));
}
Methode 2:
var request = (HttpWebRequest)WebRequest.Create("http://www...");
using (var stream = request.GetRequestStream())
using (var writer = new StreamWriter(stream))
{
writer.Write(JsonConvert.SerializeObject(content));
}
In Verfahren 2 werden alle Strom und streamwirter in Blöcken "verwenden", so wird es sicher entsorgt werden. Aber in Verfahren 1, ich bin nicht sicher, dass Strom request.GetRequestStream() wird entsorgen. Kann mir das jemand erklären? Danke vielmals!
So, Methode 1 ist so sicher wie Methode 2? –
@MinhGiang: Ja genau. –
Sind Sie sicher? Wenn Stream.CanWrite aus irgendeinem Grund falsch ist (etwas Unvorhersehbares passiert mit der Anfrage), wirft der StreamWriter-Konstruktor ArgumentException und der zugrunde liegende Stream wird möglicherweise nicht entsorgt. sagt nicht, seine wahrscheinlich darauf hinweisen, passiert aber, dass einige Praktiken (wie Methode 1) Sie zwingen, über bestimmte Implementierungen zu denken (die auch in Zukunft ändern könnten, natürlich) und einige Praktiken nicht. Das ist der Grund, warum ich persönlich immer Methode 2 wählen würde. –