C#6之前的版本
我会用其中的最后一个作为琐碎的属性。请注意,由于getter和setter都是公共的,因此我将其称为 公共 属性。
对于自动实现的属性,不变性会有些痛苦-您不能编写只有吸气剂的自动属性;您能找到的最接近的是:
public string Foo { get; private set; }这并不是 真正的 不变……只是在课堂之外不变。因此,您可能希望使用一个 真实的 只读属性:
private readonly string foo;public string Foo { get { return foo; } }您绝对不想写
getName()和
setName()。在 某些 情况下,编写Get /
Set方法而不是使用属性是有意义的,特别是如果它们可能很昂贵并且您希望强调这一点时,尤其如此。但是,您希望对方法使用PascalCase的.NET命名约定,而且您也不想使用常规方法来实现像这样的琐碎属性-
在这里,属性更加惯用了。
C#6
好了,我们终于有了适当的只读自动实现属性:
// This can only be assigned to within the constructorpublic string Foo { get; }同样,对于只读属性,其 做 需要做一些工作,就可以使用会员浓郁的属性:
public double Area => height * width;



