簡體   English   中英

盡管我們沒有初始化它,但 propertyChanged null 是怎么回事?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM