在物件初始化器中使用集合初始化器
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() 的呼叫。