1
나는 종종 이것에 대해 궁금해했다. 어떤 Foo
에 대한 INotifyPropertyChanged
의 다음 두 구현 중 어느 것이 더 낫거나 더 정확한 것인가? 이 트리거되는 불필요한 이벤트를 방지로다음 중 INotifyPropertyChanged를보다 정확하게 구현 한 것은 무엇입니까?
/* version A: */ | /* version B: */
private bool foo; | private bool foo;
public bool Foo | public bool Foo
{ | {
set | set
{ | {
| if (value != foo)
| {
foo = value; | foo = value;
OnPropertyChanged("Foo"); | OnPropertyChanged("Foo");
| }
} | }
} | }
(이 질문에 대한 관련이없는 나는 생략 한 모든.)
나는, 그 오른쪽에있는 버전 B를해야한다 생각한다. 그러나 이처럼 똑같이 놓친 사건이 문제를 일으킬 수있는 상황이 있습니까?
B가 잠재적으로 문제가 될 수 있다고 생각하십니까? 즉 구독자가 속성을 *에 기록 할 때마다 (* 값이 변경된 것과 반대 *) 문제가 발생할 수 있습니다. – stakx
@stakx, 나는 그런 상황을 생각할 수 없다. 인터페이스는 INotifyPropertyChanged이며 INotifyPropertyValueWasWritten이 아니므로 구독자는 값이 실제로 변경된 경우에만 알림을 받아야합니다. –
매우 합리적인 지점, 그. 인터페이스가 버전 B와 비슷하게 구현 된 것을 거의 보지 못했지만 버전 A와 거의 비슷합니다. 어쩌면 게으름 때문일 수도 있습니다. 아무도 버전 A의 변호인이 없다면 나는 당신의 대답을 수락 할 것입니다. – stakx