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)
。