它会使用哪种重载方法?

时间:2012-03-27 11:45:03

标签: c# polymorphism overloading

例如我们有

     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()}

1 个答案:

答案 0 :(得分:2)

第一个 - 第二个重载不适用,因为参数的编译时类型是BaseClass而不是InheritedClass,并且没有从BaseClass到{的隐式转换{1}}。