0
锅炉板OnPropertyChanged代码,你可能会看到在几乎任何数据绑定示例如下为什么你重新声明PropertyChangedEventHandler是不是它redunded?
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string propertyName)
{
PropertyChangedEventHandler handler = PropertyChanged;
if(handler!=null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
难道这不是多余的关系吗?这难道不容易吗?
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string propertyName)
{
if(PropertyChanged!=null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
我相信我们这样做的原因是我找不到它。
但在任何情况下,您正在调用原来的属性更改事件。因此,如果它被注销,它仍然会导致空引用异常 –
@AMR不,它不会。正如我所说,代表是不可改变的。移除处理程序不会改变引用的对象,而是创建一个新的委托并将其指定给'PropertyChanged'。当你将它拉出到一个本地时,它将会是null或者不是。它永远不会改变,即使用于设置它的字段已更改。 – Servy