Menu:

DotNet频道

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

  

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

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

Article Provenance:futurelight  
Article Tags: