是否可以在声明点初始化属性

Mic*_*eyn 16 c# c#-4.0

想象一下,你在课堂上有一个字段_items.您可以在声明点初始化它:

class C
{
  IList<string> _items=new List<string>();
}
Run Code Online (Sandbox Code Playgroud)

现在我想将此字段转换为自动生成的属性,但现在初始化无效:

class C
{
  public IList<string> Items=new List<string>(); {get; set;} // Invalid
}
Run Code Online (Sandbox Code Playgroud)

所以,我必须这样做:

class C
{
  public IList<string> Items {get; set;}

  public C
  {
    Items=new List<string>();
  }
}
Run Code Online (Sandbox Code Playgroud)

但这并不像在声明点初始化字段那样方便.有没有更好的方法来执行此操作,而不必(不必要地)使用私有(在声明点初始化)字段来支持此属性,例如.

谢谢

Jon*_*eet 20

不,自动属性不允许您设置初始值.

这很烦人,但这就是生活.(令人讨厌的是,他们也不能只阅读.但那是另一天的咆哮.)

编辑:两个只读自动实现的属性和指定初始值都将在C#6中.


Mar*_*zák 6

在c#6中你可以这样写:

class C
{
    public IList<string> Items {get; set;} = new List<string>();
}
Run Code Online (Sandbox Code Playgroud)