我在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”表示它不会立即保留任何值?由于这个原因,不可能从财产中获得价值。
(这与我的其他属性之间的唯一区别是此属性可以为空)
答案 0 :(得分:2)
_value
实际上是 null 。您在调试器中看到的是内部字段,不应该依赖它。
当您将字段设置为null时,编译器可能会重用存储,这就是为什么您仍然在内部value
字段中看到旧值的原因。重要的是公共属性HasValue
和Value
。