2017-11-07 2 views
0

INotifyPropertyChanged를 구현할 때 개인 필드가 필요한 이유는 무엇입니까? 이름을 삭제하지 않고 PersonName 문자열을 아래에 그냥 사용할 수 있습니까?INotifyPropertyChanged를 구현할 때 개인 필드가 필요한 이유

private string name; 
public string PersonName 
     { 
      get { return name; } 
      set 
      { 
       name = value; 
       // Call OnPropertyChanged whenever the property is updated 
       OnPropertyChanged("PersonName"); 
      } 
     } 
+0

그게 뭐죠? – SLaks

+4

그럼 당신은 무엇을 얻을 것입니까? 같은 게터? 다음 질문 : 왜 스택 오버플로 예외가 발생합니까? – oerkelens

+0

기술적으로 private 필드가 필요하지 않습니다. 계산 된 속성을 가질 수 있습니다 (예 :'public int Price => Quantity * Rate;'). 그러면 다른 곳에서'OnPropertyChanged'를 호출 할 수 있습니다 (아마도'Quantity'와 'Rate'설정자). 하지만 당신은 setter가하는 일을 바꿀 수 없기 때문에'{get; set;} '을 사용하는 자동 속성을 사용할 수 없습니다. – vesan

답변

3

어딘가에 정보를 저장해야하기 때문에 필요합니다. getter 또는 setter에서 refrence PersonName을 사용하면 재귀 적으로 호출 할 수 있으며 스택 오버플로가 발생합니다.

public string PersonName {get; set;} 할 때 개인 변수가 계속 있으면 컴파일러에서 숨겨집니다. DotPeek과 같은 디 컴파일러를 사용하면 컴파일러에서 생성 된 코드를보고 비공개 변수를 볼 수 있습니다.

+0

내가 이해하지 못하는 부분이 있습니다. 개인 변수가 없다고 생각했습니다. 공용 문자열 PersonName; 정리 해줘서 고마워요. – user2202098

관련 문제