Resharper: Possible null assignment to entity marked with notnull attribute

你。 提交于 2019-11-30 10:48:42
var reader = new StreamReader(response.GetResponseStream());

I suspect StreamReader constructor's parameter has a notnull attribute. Try the following:

var stream = response.GetResponseStream();
if (stream == null)
  // throw an exception
var reader = new StreamReader(stream);

Try shortening your code and wrapping disposable resources in using statements:

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

or even further:

using (var client = new WebClient())
{
    return client.DownloadString("http://foo.bar.com/")
}

If the response object is of type HttpWebRequest, then response will always be of type HttpWebResponse. If it's not, then it never will be.

Either you're testing this at the wrong place (why call .GetResponse() if you could be passed another class derived by WebRequest just to throw away the results) or testing unnecessary with no effect.

I'm guessing resharper is worrying about that, despite the test for null below it. I'd go for either a direct cast:

using (var response = (HttpWebResponse)request.GetResponse())
using(var reader = new StreamReader(response.GetResponseStream()))
  return reader.ReadToEnd();

Or, considering you aren't using any members of HttpWebResponse that isn't derived from WebResponse, no cast at all:

using (var response = (HttpWebResponse)request.GetResponse())
using(var reader = new StreamReader(response.GetResponseStream()))
  return reader.ReadToEnd();
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!