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

就像在评论中所述,首先分配响应流并检查它是否为空,如下所示:

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 回答