在对象初始化器中使用集合初始化器
public class Tag
{
public IList<string> Synonyms { get; set; }
}
Synonyms
是一个集合类型的属性。当使用对象初始化器语法创建 Tag
对象时,也可以使用集合初始化器语法初始化 Synonyms
:
Tag t = new Tag
{
Synonyms = new List<string> {"c#", "c-sharp"}
};
collection 属性可以是 readonly,仍然支持 collection initializer 语法。考虑这个修改过的例子(Synonyms
属性现在有一个私有的 setter):
public class Tag
{
public Tag()
{
Synonyms = new List<string>();
}
public IList<string> Synonyms { get; private set; }
}
可以像这样创建一个新的 Tag
对象:
Tag t = new Tag
{
Synonyms = {"c#", "c-sharp"}
};
这是有效的,因为集合初始化器只是对 Add()
调用的合成糖。这里没有创建新列表,编译器只是在退出对象上生成对 Add()
的调用。