当前位置:编程学习 > C#/ASP.NET >>

C#的Dictionary怎么用……

别误会……
我用Dictionary<Object,Object>处理Hash数据。
也就是
a["xxx"]=xxx
但是使用的时候会出现一层Hash里面套着另外一层哈希……显然我知道他的结构
但是问题是
Dictionary<Object,Object> a=(Dictionary<Object,Object>)GetReadData(aFile)
这样都是正常的
可是
Dictionary<Object,Object>b = (Dictionary<Object,Object>) a["xxx"] //这里a["xxx"]里面还是个Dictionary<Object,Object>但是实际上使用中这里面还可能是别的什么int啊,string啊……但是这和key有关所以肯定不会弄错
或者
Dictionary<Object,Object>b =  a["xxx"] as Dictionary<Object,Object>
就不行了……得到的数据有丢失还会混乱……
可是在
Dictionary<Object,Object> a=(Dictionary<Object,Object>)GetReadData(aFile)
下断点,调试的时候看 a里面Key为"xxx"的Value确是正常的 --------------------编程问答-------------------- C# 泛型Dictionary (Hashtable)

我大二总结的,帮得上忙了。  --------------------编程问答--------------------
引用 1 楼 xx_mm 的回复:
C# 泛型Dictionary (Hashtable)

我大二总结的,帮得上忙了。

这不是重点……关键是好吧代码因该是这样的
Dictionary<Object,Object> a=new Dictionary<Object,Object> { };
Dictionary<Object,Object> b=new Dictionary<Object,Object> { };
……往b里面添加数据
a[(Object)"hi"]=(Object)b;
……往a里面添加数据
Object c=(Object)a;
Dictionary<Object,Object> d=(Dictionary<Object,Object>)c;
Dictionary<Object,Object> e=(Dictionary<Object,Object>)d[(Object)"hi"];
结果:e != b
但是他们因该要一样的
一部分数据还在,一部分数据错位,还有一部分变成System.Object[] --------------------编程问答-------------------- 我试了一下,追踪看起来,ee和b里的数据也是一样的,应该是相等的。看我下面的测试代码,另外这种对象的比较,是不是用Equals更妥当些呢?
   Dictionary<Object, Object> a = new Dictionary<object, object>();
            Dictionary<Object, Object> b = new Dictionary<object, object>();
            b.Add(11, "222");
            b.Add("sdsfs", "222");
            a.Add((Object)"hi", (Object)b);
            Object c = (Object)a;
            Dictionary<Object, Object> d = (Dictionary<Object, Object>)c;
            Dictionary<Object, Object> ee = (Dictionary<Object, Object>)d[(Object)"hi"];
            bool xx = b.Equals(ee);//这里返回的是True
--------------------编程问答-------------------- 点击进入该帖看三楼详细回答
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,