接口、继承和泛型方法的使用
接口,继承到方法中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.
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步