日期:2014-05-18 浏览次数:20952 次
Dictionary<object[], string> dic = new Dictionary<object[], string>(); object[] key = new object[] { "123", "abc" }; dic.Add(key, "first"); object[] key2 = new object[] { "123", "abc" }; Console.WriteLine(dic[key]);//根据key获取对应的value Console.ReadLine();
------解决方案--------------------
帮你UP下吧~
------解决方案--------------------
这样做一定是不行的,你需要定义一个比较类
public class MyComparer : IEqualityComparer<object[]>
{
public static readonly MyComparer Instance = new MyComparer();
private MyComparer()
{
}
public int GetHashCode(object[] obj)
{
return obj.GetHashCode();
}
public bool Equals(object[] obj1, object[] obj2)
{
.....
}
}
然后
private Dictionary <object[], string> dic = new Dictionary <object[], string>(MyComparer.Instance);
或者
把 object[] 放到一个对象,重写这个对象的 Equals
------解决方案--------------------
老兄,你的程序是不是设计有问题?
个人认为,你需要解决的问题,应该可以通过其他方法来解决
字典Dictionary的键值的类型虽然提供泛型,但是它的本意不在于希望你存一个object,如果你存的是对象,相信你需要获得对象所对应的值得地方也可以得到该对象,不然毫无意义
提供泛型是因为程序运行中,不会导致种类型转换
------解决方案--------------------
没法找到,因为不是不同的引用了,字典里的key用的是之前的引用,你只能用之前的那个引用才能找到
------解决方案--------------------
学习。。。。