可能的NullreferenceException

时间:2010-03-04 15:26:12

标签: c# resharper nullreferenceexception

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

编辑:更新的代码。

3 个答案:

答案 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。