如何用两个键实现一个字典?

时间:2011-02-27 21:02:48

标签: c# .net

使用C#,我想找到一种方法,如何实现依赖于两个关键对象的字典。

我有一个对象和一个字符串。对于这两个值,我想分配一个double值。那么我应该使用什么结构?或者我该如何实现这样的结构?

5 个答案:

答案 0 :(得分:18)

尝试使用类似的东西

Dictionary<Tuple<object,string>,double>

答案 1 :(得分:7)

您可以拥有一个聚合两个属性的自定义类,覆盖其上的GetHashCode方法,然后使用IDictionary<CustomClass, double>

答案 2 :(得分:4)

如果您使用的是.NET 3.5,则无法使用Tuples,因为这些是在.NET 4中添加的。

但是你可以轻松创建类,它将包含你的两个键,并且可以用作字典中的键。唯一要做的事情是覆盖密钥类中的Equals()GetHashCode()方法,因此Dictionary可以正确地将其用作密钥。

这些应该通过对两个键进行等同或散列来实现逻辑。以及一些更相关的信息:GetHashCode vs. Equals

答案 3 :(得分:2)

你不一定需要。如果您的对象已重写Object的GetHashCode成员。

Dictionary<string, double> myDict = new Dictionary<string, double>();

myDict[myObj.GetHashCode() + myString] = myDouble;

答案 4 :(得分:2)

创建一个类作为你的关键:

public class MyKey
{
    public String Str;
    public Object Obj;
}

然后:

Dictionary<MyKey, double> MyDict = new Dictionary<MyKey, double>();