财产不会从私人领域返回价值

时间:2012-07-20 07:21:05

标签: c# xamarin.ios monodevelop nullable

我在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”表示它不会立即保留任何值?由于这个原因,不可能从财产中获得价值。

(这与我的其他属性之间的唯一区别是此属性可以为空)

1 个答案:

答案 0 :(得分:2)

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

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