所以基本上我想检查我的C#应用程序中没有设置设置。这里的代码
if (Default["StudentAccountTypeDefault"] is null) // Crashes after this
{
//
}
else
{
//
}
似乎在空检查时崩溃了。我在那里放了一个断点,它显示Default["DefaultStudentAccountType"]
只是一个空字符串。为什么它会因NullReferenceException而崩溃?我很确定这是崩溃的地方 - 如果我注释掉if语句是否按预期工作。
编辑:减轻一些困惑。 Sooooo,Default
实际上是Settings.Default
,为了补充这一点,我实际上是试图在Settings()构造函数中访问它。所以,在它被初始化之前,显然。哎呀。下面的“完整”代码。
public Settings() {
// // To add event handlers for saving and changing settings, uncomment the lines below:
//
// this.SettingChanging += this.SettingChangingEventHandler;
//
// this.SettingsSaving += this.SettingsSavingEventHandler;
//
if (Settings.Default["DefaultStudentAccountType"] is null)
{
}
else
{
}
}
答案 0 :(得分:3)
您应该使用==
而不是is
进行核对,这也取决于您可能需要检查Default
是否为空的数据类型。试试这个:
if(Default == null || Default["StudentAccountTypeDefault"] == null)
{
}
else
{
}
答案 1 :(得分:1)
Default
是一个变量,因此如果它为null,则访问索引器["StudentAccountTypeDefault"]
将抛出一个空引用异常。
如果您使用的是足够新的.NET版本,则可以使用:
if (Default?["StudentAccountTypeDefault"] is null)
(null-coalescing运算符)。否则,在使用其索引器之前,只需检查Default
为null。