工作中能用到的基础知识总结(一) 阅读目录 简介 知识点 一、值类型和引用类型 二、装箱/拆箱问题 三、泛型 四、List是什么,有什么优点? 五、抽象类和接口关系 六、什么是面向对象 七、委托和事件 八、变体、协变性、逆变性、不变性 九、Lock的作用 简介 该博文记录一些工作中接触较多的基础知识 ...
分类:
其他好文 时间:
2017-05-02 10:15:00
阅读次数:
278
1 协变数组类型(covariant array type) 数组的协变性: if A IS-A B then A[] IS-A B[] 也就是说,java中的数组兼容,一个类型的数组兼容他的子类类型数组。 协变数组好处:使得代码的灵活性更强。 协变数组的坏处:过于灵活导致类型混乱,比如: Pero ...
分类:
编程语言 时间:
2016-11-11 11:46:21
阅读次数:
396
阅读目录 简述什么是协变性、逆变性、不变性 泛型委托的可变性 泛型接口的可变性 不变性 延伸思考 总结 简述什么是协变性、逆变性、不变性 协变性,如:string->object (子类到父类的转换) 逆变性,如:object->string (父类到子类的转换) 不变性,基于上面两种情况,不可变。 ...
分类:
其他好文 时间:
2016-09-27 19:23:31
阅读次数:
140
简述什么是协变性、逆变性、不变性 协变性,如:string->object (子类到父类的转换) 逆变性,如:object->string (父类到子类的转换) 不变性,基于上面两种情况,不可变。具体下面再做分析。 泛型委托的可变性 先使用框架定义的泛型委托Func和Action做例子(不了解的请戳 ...
分类:
其他好文 时间:
2016-08-29 09:12:07
阅读次数:
258
n 协变性、逆变性和无关性 在面向对象的计算机程序语言中,经常涉及到类型之间的转换,例如从具体类小猫到动物之间的类型转换(上行转换),或者从形状向三角形之间的转换(下行转换)。 协变性(covariance)、逆变性(contravariance)和无关性(invariant)。他们都是用来描述类型 ...
分类:
编程语言 时间:
2016-07-07 01:02:40
阅读次数:
227
对于泛型的知识,一直比较模糊,现在有机会整理一下,突发发现C#还有很多你不知道的东东,继续.NET FrameWork中泛型的协变与逆变: 1. 可变性的类型:协变性和逆变性 可变性是以一种类型安全的方式,将一个对象当做另一个对象来使用。如果不能将一个类型替换为另一个类型,那么这个类型就称之为:不变 ...
分类:
其他好文 时间:
2016-05-02 02:22:24
阅读次数:
159
一,数组的协变性(covariant array type)及集合的非协变性 设有Circle类和Square类继承自Shape类。 关于数组的协变性,看代码: 如果给 totalArray(Shape[] arr) 传递一个Circle[] 类型的数组,这是可以的,编译通过,也能正常运行。也就是说 ...
分类:
编程语言 时间:
2016-04-09 18:38:26
阅读次数:
178
1、数组的协变性数组的协变性(covariant)是指:如果类Base是类Sub的基类,那么Base[]就是Sub[]的基类。而泛型是不可变的(invariant),List不会是List的基类,更不会是它的子类。数组的协变性可能会导致一些错误,比如下面的代码:1234public static v...
分类:
编程语言 时间:
2015-10-31 00:14:39
阅读次数:
267
委托是一种定义方法签名的类型,是对方法的抽象、封装。与委托的签名(由返回类型和参数组成)匹配的任何可访问类和结构中的任何方法都可以分配给该委托,方法可以是静态方法,也可以是实例方法。将一个方法绑定到委托时,C#和CLR允许引用类型的协变性和逆变性。协变性是指方法的返回类型可以派生自委托的返回类型.....
分类:
其他好文 时间:
2015-09-22 01:24:25
阅读次数:
161
转载请注明出处:jiq?钦's
technical Blog
1
泛型语法:
泛型类: class ClassName{}
泛型方法:public void f(T x){}
基本指导原则:如果使用泛型方法可以取代将整个类泛型化,那么就应该使用泛型方法,因为它可以让事情更加清楚。
2
为什么使用泛型?
在Java SE1.5之前,没有泛型的情况的下,通过对类型...
分类:
编程语言 时间:
2015-06-29 06:32:49
阅读次数:
173