【发布时间】:2010-12-22 10:30:09
【问题描述】:
在以下代码中:
public abstract class MyClass
{
public abstract bool MyMethod(
Database database,
AssetDetails asset,
ref string errorMessage);
}
public sealed class MySubClass : MyClass
{
public override bool MyMethod(
Database database,
AssetDetails asset,
ref string errorMessage)
{
return MyMethod(database, asset, ref errorMessage);
}
public bool MyMethod(
Database database,
AssetBase asset,
ref string errorMessage)
{
// work is done here
}
}
其中 AssetDetails 是 AssetBase 的子类。
为什么第一个 MyMethod 在运行时在传递 AssetDetails 时调用第二个,而不是陷入无限的递归循环?
【问题讨论】:
-
你没有在你的
MySubClass定义上忘记一个`:MyClass`吗? -
1 - 你真的想把 MySubClass 作为一个内部类吗?为什么? 2 - 您能否举一个实际调用该方法以给出您所描述的行为的示例
-
MySubClass 不是内部类,不是。一个例子实际上是 mySubClassInstance.MyMethod(database, new AssetDetails(), ref msg); - 这命中第一个方法,然后传递给第二个
-
“mysubClassInstance”是如何声明的?是基础类型还是后代类型? (无论你放入什么类型)
-
mysubClassInstance 被声明为后代类型。
标签: c# polymorphism overriding overloading