C# 3.0中集合初始設定項(Collection Initializers)到底做了什嗎?

來源:互聯網
上載者:User

今天一朋友問我一個問題:怎樣用集合初始設定項來初始化一個字典?他一直認為所謂集合初始設定項就是向一個類似List的容器中逐個添加資料,但是換成了字典一次需要兩個資料,一下不知道怎麼辦……

我首先又一次強烈推薦他把MSDN當成解決一切問題的第一步嘗試,其實集合初始設定式MSDN裡闡述得很透徹(地址:http://msdn.microsoft.com/zh-cn/library/bb384062.aspx ):集合初始設定式就是連續調用一個IEnumerable類的Add函數。多個參數可以用{}(大括弧)來分割。 

那麼初始化字典就是這樣:

IDictionary<int, string> dic = new Dictionary<int, string>()

{

    {23, "sfds"},

    {434, "rg"},

    {-3, "jif"}

};

 

foreach (KeyValuePair<int, string> pair in dic)

    Console.WriteLine(pair);

 

 

輸出:

[23, sfds]

[434, rg]

[-3, jif]

 

 

也可以自訂一個類繼承IEnumerable並有Add函數

class a : System.Collections.IEnumerable

{

    public void Add(object a, object b)

    {

        Console.WriteLine("Add被調用,a={0}, b={1}", a, b);

    }

 

    #region IEnumerable Members

 

    System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()

    {

        throw new NotImplementedException();

    }

 

    #endregion

}

class Program

{

    static void Main()

    {

        a obj = new a()

        {

            {1, "hehe"},

            {DateTime.Now, Guid.NewGuid()}

        };

    }

}

 

輸出:

Add被調用,a=1, b=hehe

Add被調用,a=6/23/2011 4:07:35 PM, b=73ecbf16-1cab-4aa6-af20-2afc9b622e67

 

 

當對一個非IEnumerable類使用集合初始設定項或一個IEnumerable類但沒有Add函數,VS會產生編譯錯誤。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.