我在接口中定义了一个属性:
Boolean IsBusy { get; }
它在课堂上实现为:
private Boolean _isBusy = false;
public Boolean IsBusy
{
get
{
return this._isBusy;
}
private set
{
if (this._isBusy != value)
{
this._isBusy = value;
this.OnPropertyChanged("IsBusy");
}
}
}
然后当我运行应用程序时,在构造函数中检查IsBusy值时,我总是会遇到以下错误:
'IsBusy'抛出了'System.NullReferenceException'类型的异常'bool {System.NullReferenceException}
我无法理解。如果我将所有Boolean
更改为bool
,则会收到相同的错误。
我该如何解决?
答案 0 :(得分:10)
通过在调用它之前检查OnPropertyChanged
是否为空来修复它,假设OnPropertyChanged
是一个事件或一个委托变量(你没有说清楚)。这与bool
或Boolean
无关,它们是等效的(假设Boolean
已解析为System.Boolean
)。
我看不出它会抛出NullReferenceException
的任何其他原因 - 尽管它可以帮助你澄清你是否在抛出异常时调用getter或setter。一个简短但完整的例子会更有帮助。
答案 1 :(得分:1)
bool
只是Boolean
答案 2 :(得分:1)
bool
和Boolean
在编译时评估相同的内容。
答案 3 :(得分:1)
无。 {。{1}}是.net CLI用来表示真/假值的内容。 Boolean
是c#使用的。
答案 4 :(得分:1)
bool
是结构System.Boolean
的C#别名。他们是一样的。this.OnPropertyChanged
未分配。这与bool
vs Boolean
完全无关。答案 5 :(得分:1)
C#包含所有本机类型的别名。字符串表示字符串,Int32表示int等,与您使用的字符没有区别:
布尔值不能为NULL,因此您可能会因为OnPropertyChanged中的某些内容而出错。
答案 6 :(得分:0)
bool
关键字只是Boolean
关键字的类型别名。
与int
相同,是Int32
的别名。