1

この警告はrequest.GetResponse().GetResponseStream()どのように処理すればよいですか?

public void GetUserList(string url)
{
    var request = (HttpWebRequest) WebRequest.Create(url);
    string response;

    using (var stream = new StreamReader(request.GetResponse().GetResponseStream()))
    {
        response = stream.ReadToEnd();
    }

    response = DelimiterStrings.Aggregate(response, (current, delim) => current.Replace(delim, "\n"));

    foreach (var line in response.Split(DelimiterChars))
    {
        MainWindow.UserList.Add(line);
    }
}

Resharperは「修正」する方法を知りません

4

2 に答える 2

5

記載されているコメントのように、最初に応答ストリームを割り当てて、次のようにnullをチェックします。

public void GetUserList(string url)
{
  var request = (HttpWebRequest)WebRequest.Create(url);
  var responseStream = request.GetResponse().GetResponseStream();
  if (responseStream != null)
  {
    string response;
    using (var stream = new StreamReader(responseStream))
    {
      response = stream.ReadToEnd();
    }
    response = DelimiterStrings.Aggregate(response, (current, delim) => current.Replace(delim, "\n"));
    foreach (var line in response.Split(DelimiterChars))
    {
      MainWindow.UserList.Add(line);
    }
  }
}
于 2013-03-13T13:14:47.593 に答える
1

それを分離します:

var sourceStream = request.GetResponse().GetResponseStream();
Contract.Assume(sourceStream != null); // Let Resharper know it can't be null.

using (var stream = new StreamReader(sourceStream))

これには、仮定を文書化することと確認することの両方の利点があります。

于 2013-03-13T13:12:53.963 に答える