例如我们有
BaseClass myBaseObject
InheritedClass myInheritedObject
和2个重载方法
void Do(BaseClass tmp)
{ DoA();}
void Do(InheritedClass tmp)
{ DoB();}
这会做什么?
Do((BaseClass) myInheritedObject);
将DoA()
置于BaseClass
下,DoB()
置于InheritedClass
下并覆盖DoA()
并合并2 Do()
是常用技巧进入1?
void Do(BaseClass tmp)
{return tmp.DoA()}
答案 0 :(得分:2)
第一个 - 第二个重载不适用,因为参数的编译时类型是BaseClass
而不是InheritedClass
,并且没有从BaseClass
到{的隐式转换{1}}。