【发布时间】:2012-03-27 11:45:03
【问题描述】:
例如我们有
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()}
【问题讨论】:
-
第一个,因为参数的类型完全对应它的签名
-
为什么要问何时可以在编写此问题所需的相同时间内在编译器中检查自己?
-
一种方法是自己在一个快速的控制台应用程序中检查它...
-
@OferZelig:使用快速控制台应用程序检查会给他答案,但 SO 答案会给他原因。理解总比知道好,不是吗?
-
@Falanwe 你是对的,如果那是他所要求的。他问:“这有什么用?”而不是“为什么要调用第一种方法?”这是 Jon Skeet 详细阐述的绝对合理的答案。这不仅仅是语义上的问题,这家伙实际上并没有自己尝试,也不知道答案是什么,而是在 SO what 发生而不是 why 中询问一些结果发生了。
标签: c# polymorphism overloading