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
  • @ 정유 체크null몇 가지 이유로. 첫 번째 이유는그것은 될 수 있습니다null. 두 번째 이유는 해당 속성이 WPF 구성 요소에서 사용되지 않고 장면의 뒷받침으로 사용되지 않았기 때문입니다.PropertyChanged등록. 다른 많은 경우가있을 수 있습니다. 따라서 이유 #1은이유너는 확인해.null모든 경우에. - Mike Perrenoud

연결된 질문


관련된 질문

최근 질문