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