标签:
class Animal { public string Name;}//基类 class Dog : Animal { }//派生类 interface IMyIf<out T>//协变关键字out,泛型接口+接口的协变 { T GetFirst();//约束方法 } class SimpleReturn<T> : IMyIf<T>//实现泛型接口的泛型类型 { public T[] items =new T[2];//初始化对象数组 public T GetFirst() { return items[0]; }//返回对象数组的第一个对象 } class Program { static void DoSomething(IMyIf<Animal> returner)//静态方法,方法参数为参数约束为Animal对象的接口 { Console.WriteLine(returner.GetFirst().Name); } static void Main() { SimpleReturn<Dog> dogReturner = new SimpleReturn<Dog>();//实例化约束为Dog类型的对象 dogReturner.items[0] = new Dog() { Name="Avonlea"}//赋值 IMyIf<Animal> animalReturner = dogReturner;//协变为约束为Animal对象的接口 DoSomething(dogReturner);//执行静态方法 } }
标签:
原文地址:http://www.cnblogs.com/yerunwu/p/4920738.html