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