在物件初始化器中使用集合初始化器

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() 的呼叫。