보일러 판은 가능성이 거의 모든 데이터 바인딩 예PropertyChangedEventHandler가 중복되지 않는 이유는 무엇입니까?
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string propertyName)
{
PropertyChangedEventHandler handler = PropertyChanged;
if(handler!=null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
이 비록 중복 아닌가요 다음과 같다에서 볼 수 코드를 OnPropertyChanged를? 이 말을하기가 더 쉽지 않겠습니까
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string propertyName)
{
if(PropertyChanged!=null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
나는 우리가 이것을하는 이유가있다라고 확신한다. 나는 그것을 찾을 수 없다.
그러나 어느 경우이든 원래의 속성 변경 이벤트를 호출하고 있습니다. 따라서 등록이 취소 된 경우 여전히 null 참조 예외가 발생합니다. –
@AMR 아니요. 내가 말했듯이, 대의원은 불변이다. 핸들러를 삭제하는 것은 참조 된 객체를 변경하는 것이 아니라 새로운 델리게이트를 생성하고이를 'PropertyChanged'에 할당하는 것입니다. 당신이 지역에 그것을 꺼낼 때 그것은 null이거나 그렇지 않을 것이다. 설정하는 데 사용 된 필드가 변경 되더라도 변경되지 않습니다. – Servy