2

在 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 中那样显式吗?

4

4 回答 4

7

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

于 2009-06-06T21:40:20.060 回答
2

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

class SampleClass
{
   public int Property { get; private set; }
}
于 2009-06-06T21:43:12.520 回答
1

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

于 2009-06-06T21:42:38.870 回答
0

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

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

于 2009-06-06T22:14:48.320 回答