泛型接口和泛型委托中经常使用可变性in 逆变,out 协变从 list转到list 称为协变 (string 从object 派生,那么 string 转成object 是合理的,子类替换父类是合理的,)从list 转到 list 称为逆变 (经object 转成string ,将父类转成子类,是不...
泛型是JDK1.5中最重要的特征,通过引入泛型,我们将获得编译时类型的安全和运行时更小的抛出ClassCastException的可能。泛型用的最多的地方是集合。
泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。
表面上看起来,无论语法还是应用的环境(比如容器类),泛型类型(或者泛型)都类似于 C...
分类:
编程语言 时间:
2015-08-26 01:54:39
阅读次数:
270
建议45:为泛型类型参数指定逆变逆变是指方法的参数可以是委托或者泛型接口的参数类型的基类。FCL4.0中支持逆变的常用委托有:FuncPredicate常用委托有:IComparer下面例子演示了泛型类型参数指定逆变所带来的好处: class Program { stati...
建议42:使用泛型参数兼容泛型接口的不可变性让返回值类型返回比声明的类型派生程度更大的类型,就是“协变”。如: public Employee GetAEmployee(string name) { Console.WriteLine("我是雇员:"...
建议23:避免将List作为自定义集合类的基类如果要实现一个自定义的集合类,不应该以一个FCL集合类为基类,反而应扩展相应的泛型接口。FCL结合类应该以组合的形式包含至自定义的集合类,需要扩展的泛型接口通常是IEnumerable和ICollection(或ICollection的子接口,如ILis...
协变和抗变指对参数和返回值的类型进行转换。如果泛型类型用out关键字标注,泛型接口就是协变的。 这也意味着返回类型只能是T。接口Index与类型T是协变的,并从一个只读索引器中返回这个类型;public interface IIndex{ T thisIint index{get; } ...
分类:
其他好文 时间:
2015-08-01 23:19:18
阅读次数:
135
一、泛型的意义 泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。 Java语言引入泛型的好处是安全简单。 在Java SE 1.5之前,没有泛型的情况的下,通过对类...
分类:
编程语言 时间:
2015-07-31 17:57:58
阅读次数:
98
原文地址
谈谈.Net中的协变和逆变关于协变和逆变要从面向对象继承说起。继承关系是指子类和父类之间的关系;子类从父类继承所以子类的实例也就是父类的实例。比如说Animal是父类,Dog是从Animal继承的子类;如果一个对象的类型是Dog,那么他必然是Animal。协变逆变正是利用继承关系 对不同参数类型或返回值类型 的委托或者泛型接口之间做转变。我承认这句话很绕,如果你也觉得绕不妨往下看看。如果...
JDK1.5 令我们期待很久,可是当他发布的时候却更换版本号为5.0。这说明Java已经有大幅度的变化。本文将讲解JDK5.0支持的新功能-----Java的泛型.
1、Java泛型
其实Java的泛型就是创建一个用类型作为参数的类。就象我们写类的方法一样,方法是这样的method(String str1,String str2 ),方法中参数str1、str2的值是可变的。而泛型...
分类:
编程语言 时间:
2015-07-28 23:16:51
阅读次数:
148
C#中的List
C#中deList怎么样?List类是ArrayList类的泛型等效类,该类使用大小可按需动态增长的数组实现List泛型接口.
泛型的好处:它为使用C#语言编写面向对象程序增加了极大的效力和灵活性,不会强行对值类型进行装箱和拆箱,或对引用类型进行向下强制类型转化,所以性能得到提高.
性能注意事项:再决定使用List还是使用ArrayList类(两者具有类似的功能...