我的 MonoTouch 应用程序中的一个属性遇到了奇怪的行为。 看起来Property无法返回给定的值,但是MonoDevelop中的Debugger说后台的私有(private)字段实际上保存了该值??
这就是该属性的实现方式:
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");
}
}
}
在这里您可以看到调试器所说的内容:
反射值(“value”)如何保存正确的值,而反射字段“has_value”表示它没有立即保存任何值?因此,无法从属性中获取值。
(此属性与我的其他属性之间的唯一区别是此属性可为空)
最佳答案
_value
实际上是null。您在调试器中看到的是内部字段,不应依赖。
当您将该字段设置为 null 时,编译器可能会重用存储,因此您仍然在内部 value
字段中看到旧值。重要的是公共(public)属性 HasValue
和 Value
。
关于c# - 属性不从私有(private)字段返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11574689/