16

私はこのようなことをしたい:

class Foo
{
    bool Property
    {
        get;
        set
        {
            notifySomethingOfTheChange();
            // What should I put here to set the value?
        }
    }
}

値を設定するためにそこに置くことができるものはありますか?または、を明示的に定義しgetて、クラスに別のフィールドを追加する必要がありますか?

4

4 に答える 4

15

コンパイラによって生成されたバッキングフィールドとゲッターおよび/またはセッター本体を含むデフォルトのプロパティ、またはカスタムプロパティのいずれかがあります。

独自のセッターを定義すると、コンパイラーによって生成されたバッキングフィールドはありません。自分で作成し、ゲッターボディも定義する必要があります。

于 2012-07-10T13:13:25.480 に答える
12

道はない。

  • セッターとゲッターの両方を自動実装することができます

    bool Property { get; set; }
    
  • または、両方を手動で実装します

    bool Property
    {
        get { return _prop; }
        set { _prop = value; }
    }
    
于 2012-07-10T13:13:24.823 に答える
5

いいえ、これは自動プロパティが最適ではない場合であり、したがって、適切に実装されたプロパティに移動するポイントです。

class Foo
{
    private bool property;
    public bool Property
    {
        get
        {
            return this.property;
        }
        set
        {
            notifySomethingOfTheChange();
            this.property = value
        }
    }
}
于 2012-07-10T13:13:33.403 に答える