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

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

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

在.NET 4.0中,IEnumerable<T>接口将会按照下面的方式进行定义。

public interface IEnumerable<out T> : IEnumerable
{
IEnumerator<T> GetEnumerator();
}
public interface IEnumerator<out T> : IEnumerator
{
bool MoveNext();
T Current { get; }
}

这些声明中的out指出T只能出现在接口的输出位置——如果不是这样的话,编译器会报错。有了这一限制,接口对于T类型就是“协变的”,这意味着如果A可以按引用转换为B,则IEnumerable<A>可以当作IEnumerable<B>使用。

其结果是,任何一个字符串序列也就是一个对象序列了。

这很有用,例如在LINQ方法中。

使用上面的定义:

var result = strings.Union(objects); // succeeds with an IEnumerable<object>

以前这样做是不允许的,必须做一些麻烦的包装,使得两个序列具有相同的元素类型。

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

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

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