Resharper显示“可能的System.NullReferenceException”警告。然而,我无法看到我如何得到一个。
public class PlaceController : PlanningControllerBase
{
[Authorize]
public ActionResult StartStop(int id)
{
if (Request != null && Request.Cookies != null && Request.Cookies["place"] != null)
{
if (Request.Cookies["place"].Value != null)//Possible NullReferenceException?
{
string placeInformation = Request.Cookies["place"].Value;//Possible NullReferenceException?
//...
}
}
}
}
如果检查所有字段,如何给出NullReference?使用以下内容不会显示警告:
Request.Cookies[0];//Index instead of name
编辑:更新的代码。
答案 0 :(得分:6)
我假设检查器没有检查传递给CookieCollection索引器的字符串的值是否每次都相同。我想如果你将代码重构为:
if (Request != null && Request.Cookies != null)
{
var place = Request.Cookies["place"];
if (place != null && place.Value == null)
{
string placeInformation = place.Value;
}
}
它可能有用。
答案 1 :(得分:3)
您无需听取每一个警告。 Request
对象和Cookies
对象永远不会为空,因此这就是您所需要的。
var placeCookie = Request.Cookies["place"];
if (placeCookie != null)
{
string placeInformation = placeCookie.Value;
}
答案 2 :(得分:0)
错误,你不想要Request.Cookies["place"].Value != null
,现在你只将placeInformation设置为null。