我有一個類,我有一個字典持有一個特定的密鑰。但價值應該是通用的。如何創建通用字典?
喜歡的東西:
private Dictionary<String,TValue> _Dictionary;
但TValue沒有找到(obvesly),但我應該把別的什麼?我找到了IList的解決方案,但我只想添加一個通用對象。
我有一個類,我有一個字典持有一個特定的密鑰。但價值應該是通用的。如何創建通用字典?
喜歡的東西:
private Dictionary<String,TValue> _Dictionary;
但TValue沒有找到(obvesly),但我應該把別的什麼?我找到了IList的解決方案,但我只想添加一個通用對象。
所以你想要一個通用字典?使用預先定義的類。
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>()
希望我理解正確你的問題。
如果您在通用類型中使用此類型,則Tejs answer是合適的。
但是,如果你只是試圖與固定式按鍵的字典,但可以存儲任何值,一種選擇是隻使用System.Object
爲你的價值:
private Dictionary<string, object> _dictionary;
這將允許您將任何對象分配給該值。但是,這會帶來潛在的危險,因爲您會丟失類型安全性,並且需要確保正確解開並轉換對象。
另外,將對象類型的值改爲不會比System.Collections.Hashtable好多了! = D – Tejs 2011-03-16 21:09:13
@Tejs:這取決於你的目標是什麼 - 你打算在價值中存儲什麼?這將幫助我們確定實際上最好的選擇...... – 2011-03-16 22:20:32
這將用於何處? – 2011-03-16 20:59:46