更新-以下答案是在C#6出现之前编写的。在C#6中,您可以编写:
public class Foo{ public string Bar { get; set; } = "bar";}您还 可以 编写只读的自动实现的属性,这些属性只能在构造函数中写入(但也可以指定默认的初始值:
public class Foo{ public string Bar { get; } public Foo(string bar) { Bar = bar; }}不幸的是,目前无法执行此操作。您必须在构造函数中设置值。(使用构造函数链接可以帮助避免重复。)
自动实现的属性现在很方便,但是肯定会更好。我发现自己并不需要像只读的自动实现的属性那样频繁地进行这种初始化,该属性只能在构造函数中设置,并由一个只读字段来支持。
在C#5之前(包括C#5之前)还没有发生过,但是计划在C#6中使用-既允许在声明时进行初始化, 又 允许在构造函数主体中初始化只读的自动实现属性。


![初始化C#自动属性[重复] 初始化C#自动属性[重复]](http://www.mshxw.com/aiimages/31/411953.png)
