為了找記憶中依稀存在的C# 3.0 Dictionary元素簡式宣告法,耗了我快五分鐘,下定決心把它寫成一篇KB,以拯救中老年人日益衰退的記憶力。

public static void Test()
{
    //要宣告固定元素的陣列,我們都知道可以簡寫成
    string[] strAry = { "A", "B", "C", "D" };
 
    //但要宣告固定元素Dictionary,傳統上只能一步一腳印
    Dictionary<string, string> dctTradWay = 
        new Dictionary<string, string>();
    dctTradWay.Add("Key1", "AAAA");
    dctTradWay.Add("Key2", "BBBB");
    dctTradWay.Add("Key3", "CCCC");
    dctTradWay.Add("Key4", "DDDD");
 
    //C# 3.0起,強化了Collection Initializer,所以...
    Dictionary<string, string> dctNewWay =
        new Dictionary<string, string>()
        {
            {"Key1", "AAAA"}, {"Key2", "BBBB"},
            {"Key3", "CCCC"}, {"Key4", "DDDD"}
        };
    
    //很酷吧!
}

Comments

# by maxi326

會在甚麼樣的情況之下用到這種static的宣告呢?

# by Ark

中老年人被jQuery洗腦了,覺得寫程式就是要一行解決才較強阿 5分鐘一行寫出去後~讓別人得花3天還看不懂到底在寫啥 我還看過另一種"極端",宣告一堆變數後寫了好幾千行 仔細看你會發覺這幾千行跑了啥 大概要像這樣 A=OOXXYYZZ B=A C=B .... 最後 XX=YY 然後return XX 世間險惡~執行緒黑暗~這樣才能保障自己的工作阿~也是酷斃了

# by Tony

Ark, 你指的是老人家保身的方法吧,呵呵~人心險惡~

# by Jeffrey

to maxi326, 我較常見的一個例子是要讀DB建立一大張對照表,但其中有幾個寫死的選項,會先加入後,再跑迴圈塞入動態產生的元素。 to Ark, "幾千行程式最後return XX"-->感覺上是某種【人體混淆器】的產出結果,哈! 不過我喜歡程式碼簡潔(字少一點)是真的,這也是我偏愛C#多過VB.NET的理由之一。 to Tony, 你不懂長青組開發人員的心聲,降低打字數目可以減緩退化性關節炎的發生。

# by Phoenix

原來還可以連new都省略了, 長年養成的習慣讓我一直不敢跨越這一步, 又學到了一招了。

# by jIAn

C# 3.5 var dctNewWay = new Dictionary<string, string> { {"Key1", "AAAA"}, {"Key2", "BBBB"}, {"Key3", "CCCC"}, {"Key4", "DDDD"} };

# by jIAn

C#3.5 var dctNewWay = new Dictionary<string, string> { {"Key1", "AAAA"}, {"Key2", "BBBB"}, {"Key3", "CCCC"}, {"Key4", "DDDD"} };

Post a comment