码迷,mamicode.com
首页 > 其他好文 > 详细

接口的协变与抗变

时间:2015-08-01 23:19:18      阅读:135      评论:0      收藏:0      [点我收藏+]

标签:

协变和抗变指对参数和返回值的类型进行转换。

如果泛型类型用out关键字标注,泛型接口就是协变的。 这也意味着返回类型只能是T。接口Index与类型T是协变的,并从一个只读索引器中返回这个类型;

public interface IIndex<out T>
{
    T thisIint index{get; }
    int Count {get;} 
}

如果泛型类型用in关键字标注,泛型接口就是抗变的,接口只能把泛型类型T用作其方法的输入。

public interface IDisplay<in T>
{

id show(T item);

}

如果对接口Iindex使用了制度索引器,就把泛型类型T传递给方法,并从方法中检索这个类型,这不能通过协变来实现--泛型类型必须定义为不变的。不适用out和in标注,就可以把类型定义为不变的。

接口的协变与抗变

标签:

原文地址:http://www.cnblogs.com/ithuo/p/4694775.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!