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

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

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

类型参数还可以具有in修饰符,限制它们只能出现在输入位置上。

例如IComparer<T>:

public interface IComparer<in T>  
{  
public int Compare(T left, T right);  

其结果有点让人迷惑,就是IComparer<object>可以作为IComparer<string>使用!这样考虑这个结果就会很有意义——如果一个比较器可以比较任意两个object,它当然也可以比较两个string。这种性质被称作“逆变性(Contravariance)”。

泛型类型可以同时拥有带有in和out修饰符的类型参数,例如Func<...>委托类型:

public delegate TResult Func<in TArg, out TResult>(TArg arg);

很明显参数永远都是传入的,而结果永远只能是传出的。因此,Func<object, string>可以用作Func<string, object>。

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

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

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