【发布时间】:2009-06-30 15:40:57
【问题描述】:
我有:
IDictionary<string, IDictionary<string, IList<long>>> OldDic1;
(仅出于说明目的,它被实例化并具有值 - 在其他地方)
为什么我可以这样做:?
Dictionary<string, IDictionary<string, IList<long>>> dic1 =
OldDic1 as Dictionary<string, IDictionary<string, IList<long>>>;
执行此行后基本上 dic1 具有来自 OldDic1 的所有值;有效。
但是当我这样做时:
Dictionary<string, Dictionary<string, List<long>>> dic1 =
OldDic1 as Dictionary<string, Dictionary<string, List<long>>>;
我得到 null,它与强制转换相同,只是它不会崩溃,而是返回 null。所以问题是为什么我不能将它从接口转换为类型?有没有解决方案,除了首先改变它的存储方式?
【问题讨论】:
-
铸造有点混乱。当进行这种类型的转换(或使用“as”)时,基本上你所做的就是检查对象是否实际上是存储中的指定类型。您不是在创建具有该类型的新对象,您只是在检查。如果不清楚,请尝试阅读这篇文章:blogs.msdn.com/ericlippert/archive/2009/03/19/…
标签: c# .net dictionary idictionary