zoukankan      html  css  js  c++  java
  • 接口、继承和泛型方法的使用

    接口,继承到方法中List<IA>的调用

    public class InterfaceTest
    {
        void Test()
        {
            var lstA1 = new List<A1>();
            var lstA2 = new List<A2>();
            TestMethod(lstA1, lstA2);//此时是不能编译的。错误:与xxxx最匹配的重载方法具有一些无效参数
        }
    
        void TestMethod(List<IA1> a1, List<IA2> a2)
        { }
    }
    
    public class A1 : IA1 { }
    public class A2 : IA2 { }
    public interface IA1 { }
    public interface IA2 { }

    把方法修改成泛型的方法,然后利用where来约束输入的类型必须继承IA1和IA2的接口。编译通过。

    只需要修改方法的代码,其他代码无需修改。

    void TestMethod<T1, T2>(List<T1> a1, List<T2> a2)
        where T1 : IA1
        where T2 : IA2
    { }

    见识到泛型的强大了。List<class>可能由于包了一层,导致不能编译通过,不知道这是不是在协变和抗变的范畴,不继续测试了。赶紧敲代码去了。

    留文备用。icy.

  • 相关阅读:
    《需求分析与系统设计》第二篇阅读体会
    《需求分析与系统设计》第一篇阅读体会
    《编写有效用例》第二篇阅读体会
    项目目标文档
    字符流
    字节流
    递归
    File类
    JDBC接口和工具类
    异常
  • 原文地址:https://www.cnblogs.com/icyJ/p/where.html
Copyright © 2011-2022 走看看