如何创建通用字典?

时间:2011-03-16 20:52:34

标签: c# generic-programming

我有一个Class,其中我有一个包含特定Key的Dictionary。但价值应该是通用的。

类似的东西:

private Dictionary<String,TValue> _Dictionary;

但是找不到TValue(obvesly)但我应该放入什么呢?我找到了IList的解决方案,但我只想添加一个通用对象。

2 个答案:

答案 0 :(得分:2)

所以你想要一个通用词典?使用预定义的类。

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

它为您提供了一个包含整数键和字符串值的字典。如果您需要一个仅包含其中一个变量的词典,您可以继承Dictionary以创建自己的类型。

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>()

希望我能正确理解你的问题。

答案 1 :(得分:2)

如果您在通用类型中使用此功能,则Tejs answer是合适的。

但是,如果您只是尝试使用固定类型的密钥创建字典,但可以存储任何值,则只需使用System.Object作为您的值:

 private Dictionary<string, object> _dictionary;

这将允许您将任何对象分配给值。但是,这有潜在危险,因为您丢失了类型安全性并需要确保取消装箱并正确转换对象。