C# 为什么我会收到以下代码的异常?
我在接口中定义了一个属性:C# 为什么我会收到以下代码的异常?,c#,viewmodel,C#,Viewmodel,我在接口中定义了一个属性: Boolean IsBusy { get; } 它在类中实现为: private Boolean _isBusy = false; public Boolean IsBusy { get { return this._isBusy; } private set { if (this._isBusy != value)
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
,则会得到相同的错误
如何修复它?
bool
只是Boolean
的语法快捷方式,bool
和Boolean
在编译中的计算结果是相同的。在调用它之前,通过检查OnPropertyChanged
是否为null来修复它,假设OnPropertyChanged
是一个事件或一个委托变量(您还没有明确说明)。这与等价的bool
或Boolean
无关(假设Boolean
解析为System.Boolean
)
我看不出它抛出
NullReferenceException
的任何其他原因,尽管它确实可以帮助您澄清在抛出异常时您是在调用getter还是setter。一个简短而完整的例子会更有帮助。无<代码>布尔值是.net CLI用来表示真/假值的内容<代码>布尔是c#使用的
bool
是结构System.Boolean的C#别名。它们是一样的
this.OnPropertyChanged
未分配。这与bool
vsBoolean
完全无关Boolean不能为NULL,因此您可能会因为OnPropertyChanged中的某些内容而收到错误。bool关键字只是
Boolean
关键字的类型别名
与
int
相同的是Int32
的别名,您可以在调用IsBusy的地方获取构造函数的片段吗?