2014-10-02 27 views
3

我正在尋找一種方法來定義字典以供重用。即。我可以創建字典對象,而無需使用我想要的值填充字典對象。使用預定義鍵創建字典C#

這是我目前有(注意代碼不進行測試,只是舉例)

public Dictionary<string, string> NewEntryDictionary() 
{ 
    Dictionary<string, string> dic = new Dictionary<string, string>(); 

    // populate key value pair 
    foreach(string name in Enum.GetNames(typeof(Suits)) 
    { 
     dic.Add(name, ""); 
    } 

    return dic; 
} 

最終的結果應該與一組預定義鍵的新字典對象。 但我想避免這樣做。

+4

*爲什麼*你想避免這樣做?如果您不告訴我們您對目前的選項不滿意,我們無法幫助您以不同的方式做。 – 2014-10-02 12:13:15

+0

我認爲它會創建比需要更多的代碼。我也認爲它涉及所有這些迭代,這是imo效率低下的問題。 – visc 2014-10-02 12:16:29

+0

您會如何期待用N個項目填充字典而不進行N次迭代? – 2014-10-02 12:16:55

回答

5

您是否關心您編寫的代碼量或其效率並不十分清楚。從效率的角度來看,這很好 - 它是O(N),但如果你用N個條目填充字典,這很難避免。

你絕對可以使源代碼雖短,使用LINQ:

public Dictionary<string, string> NewEntryDictionary() 
{ 
    return Enum.GetNames(typeof(Suits)).ToDictionary(name => name, name => ""); 
} 

這不會是任何更有效,當然...這只是短的代碼。

0

如果你只想根據自己的枚舉保存值,使用 Dictionary<Suits,String>代替Dictionary<String,String>

一切,喬恩已經說了。使用LinQ多一點「花哨」的樣子。但是這並沒有提高性能