2011-03-16 49 views
2

我有一個類,我有一個字典持有一個特定的密鑰。但價值應該是通用的。如何創建通用字典?

喜歡的東西:

private Dictionary<String,TValue> _Dictionary; 

但TValue沒有找到(obvesly),但我應該把別的什麼?我找到了IList的解決方案,但我只想添加一個通用對象。

+0

這將用於何處? – 2011-03-16 20:59:46

回答

2

所以你想要一個通用字典?使用預先定義的類。

public Dictionary<int, string> _dictionary = new Dictionary<int, string>(); 

這就給了你一個整數的關鍵一本字典,和一個字符串值。如果你需要一個只有其中一個變量的字典,你可以繼承字典來創建你自己的類型。

public class KeyTypeConstantDictionary<T> : Dictionary<int, T> 
{ 
} 

然後使用它是像這樣:

KeyTypeConstantDictionary<string> x = new KeyTypeConstantDictonary<string>(); 
// Equivalent to Dictionary<int, string>() 
KeyTypeConstantDictionary<SomeObject> x = new KeyTypeConstantDictonary<SomeObject>(); 
// Equivalent to Dictionary<int, SomeObject>() 

希望我理解正確你的問題。

2

如果您在通用類型中使用此類型,則Tejs answer是合適的。

但是,如果你只是試圖與固定式按鍵的字典,但可以存儲任何值,一種選擇是隻使用System.Object爲你的價值:

private Dictionary<string, object> _dictionary; 

這將允許您將任何對象分配給該值。但是,這會帶來潛在的危險,因爲您會丟失類型安全性,並且需要確保正確解開並轉換對象。

+0

另外,將對象類型的值改爲不會比System.Collections.Hashtable好多了! = D – Tejs 2011-03-16 21:09:13

+0

@Tejs:這取決於你的目標是什麼 - 你打算在價值中存儲什麼?這將幫助我們確定實際上最好的選擇...... – 2011-03-16 22:20:32