2012-07-20 4 views
2

MonoTouch-Application에서 내 속성 중 하나의 이상한 동작이 발생합니다. 주어진 값을 속성에서 반환 할 수는 없지만 MonoDevelop의 디버거에서는 백그라운드의 개인 필드가 실제로 값을 보유하고 있다고합니다. ??속성이 전용 필드에서 값을 반환하지 않습니다.

public int? Status 
{ 
    get { return this._status; } 
    internal set 
    { 
     if (this._status != value) 
     { 
      // Status hat sich geändert, darum Speichervorgang nötig 
      this._mustBeSaved = true; 
      this._status = value; 
      this.NotifyPropertyChanged("Status"); 
     } 
    } 
} 

을 그리고 여기 당신이 디버거의 말씀 볼 수 있습니다 : 얼마나

Debugger http://img818.imageshack.us/img818/2226/propertyw.png

그것이 가능 그 반사 된 값 ("값"

이 속성이 구현있어 어떻게)는 올바른 값을 보유하고 반영된 필드 "has_value"는 한 번에 값을 보유하지 않는다고 말합니다. 이런 이유로 재산에서 값을 얻을 수 없습니다.

답변

2

_value 실제로 입니다 (이 내 다른 속성의 유일한 차이점은이 속성이 Null을 허용한다는 것입니다). 디버거에서 볼 수있는 것은 내부 필드이므로 의존해서는 안됩니다.

필드를 null로 설정하면 컴파일러에서 저장소를 다시 사용하기 때문에 내부의 value 필드에 여전히 이전 값이 표시됩니다. 공공 재산은 무엇입니까? HasValueValue입니다.

+0

사실, 디버거가 실제로이 내용을 투명하게 만들어야하지만 컴파일러는 그렇습니다. 나는 버그를 제출했다 : https://bugzilla.xamarin.com/show_bug.cgi?id=6282 –

관련 문제