2

MonoTouch-Applicationのプロパティの1つで奇妙な動作に直面しています。指定された値はプロパティから返すことができないようですが、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");
        }
    }
}

そして、ここでデバッガーの内容を確認できます。

デバッガ

反映された値( "value")が正しい値を保持し、反映されたフィールド "has_value"が一度に値を保持していないことを示すのはどうしてですか?このため、プロパティから値を取得することはできません。

(これと他のプロパティの唯一の違いは、このプロパティがnull許容であることです)

4

1 に答える 1

2

_value実際にはnullです。デバッガーに表示されるのは内部フィールドであり、依存するべきではありません。

valueフィールドをnullに設定すると、コンパイラはおそらくストレージを再利用するため、内部フィールドに古い値がまだ表示されているのはそのためです。重要なのは、パブリック プロパティHasValueValue.

于 2012-07-20T20:05:14.030 に答える