为什么我不能检查连接字符串上的空引用?

Bre*_*uck 2 c# asp.net null connection-string nullreferenceexception

可能是一个C#noob问题,所以不要激怒我.我试图这样做:

if (ConfigurationManager.ConnectionStrings["PrimaryConnectionString"].ConnectionString != null)
{
    // ...
}
Run Code Online (Sandbox Code Playgroud)

但我一直得到一个System.NullReferenceException.我想,因为它返回一个我可以检查null并继续前进的字符串.我花了一段时间才找到正确的方法:

ConnectionStringSettings cs = ConfigurationManager.ConnectionStrings["PrimaryConnectionString"];
if (cs != null)
{
    this.Connection.ConnectionString = cs.ConnectionString;
}
Run Code Online (Sandbox Code Playgroud)

所以在其他情况下,比如检查Session对象的某些值,我会null像这样检查:

if (Session["EmployeeID"] != null)
{
    _EmployeeID = System.Convert.ToInt32(Session["EmployeeID"]);
}
Run Code Online (Sandbox Code Playgroud)

所以我只是想知道你怎么知道什么时候能做或不能做检查null

pax*_*blo 11

你的问题是你正在检查:

ConfigurationManager
    .ConnectionStrings["PrimaryConnectionString"]
        .ConnectionString
Run Code Online (Sandbox Code Playgroud)

对于空指针.

事实上,

ConfigurationManager
    .ConnectionStrings["PrimaryConnectionString"]
Run Code Online (Sandbox Code Playgroud)

为空,这样,当你试图取消引用获取连接字符串,这就是当你有例外.实际上,你正在做的是:

null.ConnectionString
Run Code Online (Sandbox Code Playgroud)

这是有问题的.

我倾向于在单个语句中避免多层解除引用,或者在整个事物周围放置一个异常处理程序来捕获任何问题.