是否需要关闭Web请求流?

Dra*_*vuk 5 c# stream httpwebrequest

哪种方式更受欢迎?

A:

HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
Stream reqStream = req.GetRequestStream();
reqStream.Write(data, 0, data.Length);
reqStream.Close();
Run Code Online (Sandbox Code Playgroud)

B:

HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.GetRequestStream().Write(data, 0, data.Length);
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 13

选项C代替:

HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
using (Stream reqStream = req.GetRequestStream())
{
    reqStream.Write(data, 0, data.Length);
}
Run Code Online (Sandbox Code Playgroud)

但是,我会关闭请求流.它可能不是绝对必需的,但我不想假设 - 特别是,除非你有充分的理由相信它不是必需的(例如文档),否则实现可能会随着时间的推移而改变并打破"懒惰"代码后来.

如果你发现自己经常这样做,你总是可以写一个实用工具方法(甚至可能作为扩展方法):

public static void WriteRequestData(this WebRequest request, byte[] data)
{
    using (Stream reqStream = request.GetRequestStream())
    {
        reqStream.Write(data, 0, data.Length);
    }
}
Run Code Online (Sandbox Code Playgroud)

然后将其称为:

HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.WriteRequestData(data);
Run Code Online (Sandbox Code Playgroud)