在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中的显式字段吗?
答案 0 :(得分:7)
是的,这是唯一的方法。没有自定义的快捷方式(访问修饰符除外)。
答案 1 :(得分:2)
使用C#3.0和自动属性,您仍然可以更改访问级别:
class SampleClass
{
public int Property { get; private set; }
}
答案 2 :(得分:1)
是的,自动属性的目的是提供一种在将来添加自定义的方法,而不会影响该类的现有用户。这通常意味着添加私有/受保护的支持字段。
答案 3 :(得分:0)
您也不能使用自动属性指定只读字段,也不能使用变量初始值设定项(尽管我已经看到了一些允许这些扩展名的建议语言扩展名。)
您可以将自动属性设置为虚拟,但这意味着对类中属性的任何访问都可以调用子类型实现。