16

我想做这样的事情:

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

有什么我可以放在那里设置值的吗?还是我必须明确定义get并在类中添加另一个字段?

4

4 回答 4

15

您要么有一个默认属性,带有编译器生成的支持字段和 getter 和/或 setter 主体,要么有一个自定义属性。

一旦定义了自己的 setter,就没有编译器生成的支持字段。您必须自己制作一个,并定义吸气剂体。

于 2012-07-10T13:13:25.480 回答
12

没有办法。

  • 您可以同时自动实现 setter 和 getter

    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 回答
-3

在许多情况下,您可以使用“自动属性”功能,例如 public int Age { get; 放; } = 43;

这是一个很好的参考http://www.informit.com/articles/article.aspx?p=2416187

纳吉·K。

于 2018-07-25T20:41:21.253 回答