Beispiel #1
0
        /// <summary>
        /// 协变测试
        /// 1.协变类型参数,该参数只能用于输出的位置(例如方法的返回值)
        /// 2.仅泛型接口和泛型委托支持协变类型参数(泛型类不支持协变类型参数)
        ///    在接口和委托的类型参数上指定out修饰符可将其声明为协变参数
        /// 3.(由于历史原因)数组支持协变
        /// </summary>
        private void Test01()
        {
            MyStackA <Cat> catStack = new MyStackA <Cat>();
            //MyStackA<Animal> animalStack = catStack;//编译报错

            MyStackB <Cat>     catStackB    = new MyStackB <Cat>();
            IPoppable <Animal> animalStackB = catStackB;//利用协变
            Animal             a1           = animalStackB.Pop();

            //WashA(catStackB);
            //WashB(catStackB);
            WashC(catStackB);
        }
Beispiel #2
0
 private void WashB(MyStackB <Animal> animal)
 {
 }