可能是一个 C# 菜鸟问题,所以不要喷我。我试图这样做:
if (ConfigurationManager.ConnectionStrings["PrimaryConnectionString"].ConnectionString != null)
{
// ...
}
但我一直收到 System.NullReferenceException
。我想既然它返回了一个字符串,我就可以检查 null
并继续。我花了一段时间才找到正确的方法:
ConnectionStringSettings cs = ConfigurationManager.ConnectionStrings["PrimaryConnectionString"];
if (cs != null)
{
this.Connection.ConnectionString = cs.ConnectionString;
}
所以在其他情况下,比如检查 Session
对象的某个值,我会像这样检查 null
:
if (Session["EmployeeID"] != null)
{
_EmployeeID = System.Convert.ToInt32(Session["EmployeeID"]);
}
所以我只想知道你怎么知道什么时候可以或不能检查 null
?
最佳答案
您的问题是您正在检查:
ConfigurationManager
.ConnectionStrings["PrimaryConnectionString"]
.ConnectionString
对于空指针。
事实上,
ConfigurationManager
.ConnectionStrings["PrimaryConnectionString"]
为 null,因此,当您尝试取消引用 that 以获取连接字符串时,就会出现异常。实际上,您正在做的是:
null.ConnectionString
这是有问题的。
我倾向于要么避免在单个语句中进行多层取消引用,要么在整个事情周围放置一个异常处理程序以在任何时候捕获问题。
关于c# - 为什么我不能检查连接字符串上的空引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1175952/