首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cast Dictionary<TKey,TValue> as Dictionary<TKey,TBaseValue>

Cast Dictionary<TKey,TValue> as Dictionary<TKey,TBaseValue>
EN

Stack Overflow用户
提问于 2014-11-20 00:13:57
回答 1查看 45关注 0票数 0

给予:

代码语言:javascript
复制
class TKey {}
class TBaseValue {}
class TValue : TBaseValue {}

我们怎么能投

代码语言:javascript
复制
Dictionary<TKey, TValue>

作为

代码语言:javascript
复制
Dictionary<TKey, TBaseValue>

为什么不能含蓄地这样做呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-20 00:20:30

因为Dictionary<TKey, TValue>不是只读的,所以不能在这里使用协方差(实际上,在声明类型时没有允许协/反方差的outin )。

为了说明为什么会出现这种情况,只需考虑一下一旦转换到Dictionary<TKey, TBaseValue>之后会发生什么。您仍然在处理原始字典,它的值应该是TValue。但是,通过这种方式,您可以添加一些不同的TBaseValue子类(甚至TBaseValue本身),这将违反原始对象类型的规则。

基本上,这是C#防止你犯一个大错误的方法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27029520

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档