私はしばしば "using"ブロックを使ってオブジェクトを破棄します。 今日、私はデータを投稿するためにHttpWebRequestを使用しています。私は2つの方法の間で混乱しています。"using block"を使用すると混乱します - C#
方法1:
var request = (HttpWebRequest)WebRequest.Create("http://www...");
using (var writer = new StreamWriter(request.GetRequestStream()))
{
writer.Write(JsonConvert.SerializeObject(content));
}
方法2:方法2、ブロック "を使用して" 内のすべてのストリームとstreamwirterにおいて
var request = (HttpWebRequest)WebRequest.Create("http://www...");
using (var stream = request.GetRequestStream())
using (var writer = new StreamWriter(stream))
{
writer.Write(JsonConvert.SerializeObject(content));
}
ので、確かにそれが配置されます。しかし、方法1では、私はストリームrequest.GetRequestStream()が処分されるかわからないです。誰も私に説明することはできますか?どうもありがとう!
したがって、方法1は方法2と同じくらい安全ですか? –
@MinhGiang:そうです。 –
それは本当ですか?何らかの理由でStream.CanWriteがfalseの場合(要求が予測できない場合)、StreamWriterコンストラクタはArgumentExceptionをスローし、基になるストリームが破棄されることがあります。 その可能性は高いとは言いませんが、(方法1のような)いくつかのプラクティスでは、特定の実装(将来も変更される可能性があります)について考える必要があります。これが私が個人的に常に方法2を選択する理由です。 –