使用C#,我想找到一种方法,如何实现依赖于两个关键对象的字典。
我有一个对象和一个字符串。对于这两个值,我想分配一个double值。那么我应该使用什么结构?或者我该如何实现这样的结构?
答案 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>();