[英]Cast Dictionary<TKey, TValue> as Dictionary<TKey, TBaseValue>
鉴于:
class TKey {}
class TBaseValue {}
class TValue : TBaseValue {}
我们如何铸造
Dictionary<TKey, TValue>
如
Dictionary<TKey, TBaseValue>
为什么不能隐式地完成呢?
由于Dictionary<TKey, TValue>
不是只读的,因此您不能在此处使用协方差(实际上,声明类型时不带out
或in
会导致协/反方差)。
为了说明为什么会这样,只需考虑一下一旦转换为Dictionary<TKey, TBaseValue>
会发生什么。 您仍在处理原始字典,该字典的值应该只是TValue
。 但是以这种方式,您可以添加一些不同的TBaseValue
子类(甚至TBaseValue
本身),这将违反原始对象类型的规则。
基本上,这是C#防止您犯大错误的方法。 :)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.