频道栏目
读书频道 > 软件开发 > C# > Visual C#2010开发权威指南
2.1.16 C# 4.0新特性 - Variance变性
2012-12-08 10:41:26     我来说两句
收藏   我要投稿

本文所属图书 > Visual C#2010开发权威指南

Visual Studio是微软公司推出的开发环境,是目前最流行的Windows平台应用程序开发环境。Visual Studio 2010版本于2010年4月12日面市,其集成开发环境(IDE)的界面被重新设计和组织,变得更加简单明了。Visual ...  立即去当当网订购

泛型的某个方面会让人感到奇怪,比如下面的代码是不合法的:
IList<string> strings = new List<string>();  
IList<object> objects = strings; 

第二个赋值是不允许的,因为strings和objects的元素类型并不一样。这样做有充分的原因。如果允许那样写的话,你可能会写:
objects[0] = 5;
string s = strings[0];

这会允许将int插入strings列表中,然后将其作为string取出,会破坏类型安全。

然而,对于某些接口来说,上述情况并不会发生,尤其是不能将对象插入集合时。例如IEnumerable<T>就是这样的接口。

如果改为:
IEnumerable<object> objects = strings;

这样就没法通过objects将错误类型的东西插入到strings中了,因为objects没有插入元素的方法。

变性(Variance)就是用于在这种能保证安全的情况下进行赋值的。结果就是很多先前让我们感到奇怪的情况现在可以工作了。

您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:2.1.15 C# 4.0新特性 - 省略ref
下一篇:2.1.17 C# 4.0新特性 - Covariance协变性
相关文章
图文推荐
排行
热门
最新书评
文章
下载
读书
特别推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站