当我遇到这种情况并意识到我不确定最好的解决方案是什么时,我感到很惊讶。
假设我有以下三种类型:
class A { }
class B : A { }
class C : A { }
以及以下三种方法:
DoSomething(A a){ }
DoSomething(B b){ }
DoSomething(C c){ }
我有一个List<A>
包含 B 和 C 类型的对象
我想这样做:
foreach(A a in list) { DoSomething(a) }
并让它调用与底层类型最匹配的方法,但当然这总是会调用DoSomething(A a)
我不希望有一堆类型检查来获得正确的方法调用,并且我不想向 A、B 或 C 类添加任何内容。
是否可以?