首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

关于C#字典的有关问题

2012-08-21 
关于C#字典的问题Dictionaryobject[], string dic new Dictionaryobject[],string()object[] key

关于C#字典的问题
Dictionary<object[], string> dic = new Dictionary<object[],string>();
object[] key = new object[] { "123", "abc" };
dic.Add(key, "first");
object[] key2 = new object[] { "123", "abc" };
   
//dic.ContainsKey(key) --- true
//dic.ContainsKey(key2)--- false

我创建一个object[]的副本,如何让字典能找到对应的值?


[解决办法]
object[] key = new object[] { "123", "abc" }; 
object[] key2 = new object[] { "123", "abc" }; 
key和key2是不同的两个对象

[解决办法]
这个问题很怪异,第一次遇到
[解决办法]
Mark~
[解决办法]

C# code
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用的是之前的引用,你只能用之前的那个引用才能找到
[解决办法]
学习。。。。

热点排行