5

この質問にはすでに答えがあります。

私はiNotifyPropertyChangedを詳しく読んでいます。

誰かがなぜ私たちがチェックする必要があるのかを明確にしてもらえますかPropertyChanged !=null

イベントがnullになるのはなぜですか?または言い換えれば、なぜそれがnullであるかどうかさえチェックしますか?唯一の時間NotifyPropertyChanged呼び出されるのはいつですかPropertyChanged提起されているので(それはnullにすることはできません)、そうではありません。誰が/それをnullにすることができますか?

    public event PropertyChangedEventHandler PropertyChanged;

    private void NotifyPropertyChanged(string info)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this,new PropertyChangedEventArgs(info));
        }

    }

ありがとうございました。


1 답변


9

誰もそのイベントを購読していない場合はnullになります。そうでなければ、実行時にイベントに対してNullReferenceExceptionが発生します。

あなたが話しているインターフェースの場合、INotifyPropertyChangedインターフェースはかなり雑然としているので、彼らが購読しようとしているにもかかわらず購読者が購読する機会を得る前に、それも上がる行動が起こるだろう。


  • ご回答ありがとうございます。 - iAteABug_And_iLiked_it
  • @ iAteABug_And_iLiked_it、問題ありません。お手伝いできることをうれしく思います。 - Mike Perrenoud
  • この場合、誰が加入者ですか?私は自分のハンドラでそのイベントをフックするために手動で加入者を実装したことがありません。この場合、これを実行するのはWPFであると想定します。したがって、これを実行しているWPFであることがわかっている場合は、なぜNullを確認しますか - zheng yu
  • @zhengyuチェックしますnullいくつかの理由があります。最初の理由はかもねnull。 2つ目は、そのプロパティがWPFコンポーネントでは使用されていないが、サポートとして裏側で使用されていない場合、その理由はありません。PropertyChanged登録他にも多くの場合があります。したがって、理由1は理由あなたがチェックするnullいずれの場合も。 - Mike Perrenoud

リンクされた質問


関連する質問

最近の質問