[英]How isn't propertyChanged null although we don't initialize it?
在 Xamarin.Forms 上,我實現了 INotifyPropertyChanged 並且工作正常。
不過有一點我不明白:PropertyChanged 是一個事件,這意味着它是一個委托。 在我們調用 event/delegate 之前,我們需要它們指向某個函數/eventHundler。
怎么樣,這里我們聲明了一個事件,我們沒有將它設置為指向任何 function 並且一切正常,為什么不是 null。 雖然我們從未初始化它。
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged([CallerMemberName] string propertyName = "")
{
var changed = PropertyChanged;
if (changed == null) //It seems for me, this should be null for ever.
return;
changed.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
如果未訂閱事件,表達式someEvent == null
將返回 true。 您需要執行此檢查,否則您可能會收到NullReferenceException
。 有關事件檢查文檔的更多信息。
編輯:
Xamarin.Forms 的內部代碼訂閱您的事件。 這樣,當您調用事件 Xamarin.Forms 時,就知道某些屬性的值已經更新,可以在表單中更新它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.