Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 可能为用notnull属性标记的实体分配null_C#_.net_Resharper - Fatal编程技术网

C# 可能为用notnull属性标记的实体分配null

C# 可能为用notnull属性标记的实体分配null,c#,.net,resharper,C#,.net,Resharper,我在request.GetResponse().GetResponseStream()上收到此警告我应该如何处理 public void GetUserList(string url) { var request = (HttpWebRequest) WebRequest.Create(url); string response; using (var stream = new StreamReader(request.GetResponse().GetResponse

我在
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不知道如何“修复它”

将它分离出来:

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

using (var stream = new StreamReader(sourceStream))
这具有记录和检查您的假设的优点

把它分开:

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

using (var stream = new StreamReader(sourceStream))

这具有记录和检查您的假设的优点

与前面的注释类似,首先分配响应流并检查其是否为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);
    }
  }
}

与前面的注释一样,首先分配响应流并检查其是否为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);
    }
  }
}

您首先必须将其分配给一个新变量,在null上检查它,然后将其分配给读取器问题是,如果-url响应404-行输入异常-如何修复?这似乎是一个不同的问题…可能的重复项您首先必须将其分配给一个新变量,检查空值,然后将其分配给读卡器问题是,如果-url响应404-行输入异常-如何修复?这似乎是另一个问题…可能重复您也假设询问者使用代码契约:)您的意思是人们不使用?天哪!;)当然,他们可以只做
Trace.Assert(sourceStream!=null)
。您还假设询问者使用的是代码契约:)您的意思是人们不使用?天哪!;)当然,他们可以只做
Trace.Assert(sourceStream!=null)