看下面一段代码 Number num = new Integer(1); ArrayList<Number> list = new ArrayList<Integer>(); //type mismatch List<? extends Number> list = new ArrayList<Number>(); list.add(new Integer(1)); //error list.add(new Float(1.2f)); //error 有人会…
看下面一段代码 Number num = new Integer(1); ArrayList<Number> list = new ArrayList<Integer>(); //type mismatch List<? extends Number> list = new ArrayList<Number>(); list.add(new Integer(1)); //error list.add(new Float(1.2f)); //error 有人会…
首先看一段测试代码,自己写的 class Program { static void Main(string[] args) { man OneMan = new man(); var d = OneMan.CreatNewObject() as man ; // 这里是父类object转换为子类man,逆变 Console.WriteLine("这是OneMan的类 "+OneMan); // 打印对象,默认打印对象的toString方法 d.Speak(); Console.Rea…
转自:http://www.cnblogs.com/jingzhongliumei/archive/2012/07/02/2573149.html 先做点准备工作,定义两个类:Animal类和其子类Dog类,一个泛型接口IMyInterface<T>, 他们的定义如下: public class Animal { } public class Dog : Animal { } interface IMyInterface<T> { } 一. 协变和逆变的定义 从.Net…