【问题标题】:How to customize Auto Properties in C# 3.0如何在 C# 3.0 中自定义自动属性
【发布时间】:2010-10-31 22:18:29
【问题描述】:

在 C# 3.0 之前,我们这样做:

class SampleClass
{
   private int field;
   public int Property { get { return this.field } set { this.field = value } }
}

现在我们这样做:

class SampleClass
{
   public int Property { get; set; }
}

(看妈妈!没有字段!) 现在,如果我想自定义 Getter 或 Setter,该字段必须像 C#2.0 中那样显式?

【问题讨论】:

标签: .net c#-3.0 properties automatic-properties


【解决方案1】:

是的,这是唯一的方法。没有自定义快捷方式(访问修饰符除外)。

【讨论】:

    【解决方案2】:

    使用 C# 3.0 和自动属性,您仍然可以更改访问级别:

    class SampleClass
    {
       public int Property { get; private set; }
    }
    

    【讨论】:

      【解决方案3】:

      是的,自动属性的目的是提供一种在未来添加自定义的方法,而不影响类的现有用户。这通常意味着添加一个私有/受保护的支持字段。

      【讨论】:

      • 一般来说,所有字段都应该是私有的,以便更好地封装。如果您希望子类型访问该字段,您应该有一个公共 getter 和受保护的 setter(或其变体)
      【解决方案4】:

      您也不能使用自动属性指定只读字段,也不能使用变量初始化器(尽管我已经看到一些建议的语言扩展允许这些)。

      您可以将自动属性设为虚拟,但这意味着对类中属性的任何访问都可以调用子类型实现。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-20
        • 2012-02-15
        • 2018-06-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多