C#特性聚焦:协变和逆变

2008-11-19 09:40:09.0     推荐:0    收藏:0    评论:0     来源:InfoQ中文站

为了匹配Java及支持J#,.NET数组总是一个协变变量。不幸的是,这样做是一种不安全的方式,在数组中存储值的时候都需要进行运行时检查。对于.NET 2和泛型,协变和逆变变异都不能支持了。

.NET 4将在接口和委托上支持安全的协变和逆变。为了实现这种功能,在接口上的类型应该被标记为“in”或“out”修饰符。如果标记为out,那么接口就支持协变,并且给定的类型只能表现为一个返回类型或只读属性。如果标记为in,那么类型只能表现为一个参数或只写属性。

这个功能只对引用类型有效,在结构上不允许变异。通过引用传递的参数同样也不允许。可被标记为支持变异的主要接口和委托有,IEnumerable、IQueryable、Func和Action等。

您可以针对本文进行:[评论]  [收藏]  [推荐]  
  • 共有0条评论  点击查看更多评论
  • 网友评论仅供网友表达个人看法,并不表明e800同意其观点或证实其描述
我想发表评论:
用户名密码
  • 匿名发表
    验证码: