2

我在 MonoTouch-Application 中遇到了我的一个属性的奇怪行为。貌似给定的值不能通过Property返回,但是MonoDevelop中的Debugger说后台的私有字段居然持有值??

这是该属性的实现方式:

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");
        }
    }
}

在这里你可以看到调试器说什么:

调试器

反射值(“值”)如何保持正确的值,而反射字段“has_value”表示它没有立即保持任何值?因此,无法从属性中获取值。

(这个和我的其他属性的唯一区别是这个属性可以为空)

4

1 回答 1

2

_value实际上是null。您在调试器中看到的是内部字段,不应依赖。

当您将该字段设置为 null 时,编译器可能会重用存储,这就是为什么您仍然在内部value字段中看到旧值的原因。重要的是公共属性HasValueValue.

于 2012-07-20T20:05:14.030 回答