2
我試圖調用代碼重載的方法是這樣的:StackOverflowException在重載方法
public abstract class BaseClass<T>
{
public abstract bool Method(T other);
}
public class ChildClass : BaseClass<ChildClass>
{
public bool Method(BaseClass<ChildClass> other)
{
return this.Method(other as ChildClass);
}
public override bool Method(ChildClass other)
{
return this == other;
}
}
class Program
{
static void Main(string[] args)
{
BaseClass<ChildClass> baseObject = new ChildClass();
ChildClass childObject = new ChildClass();
bool result = childObject.Method(baseObject);
Console.WriteLine(result.ToString());
Console.Read();
}
}
一切正常,但StackOverflowException異常。 在我的理解中,如果我調用重載方法,那麼應該調用最具體的方法版本,但在這種情況下調用Method(BaseClass<ChildClass> other)
而不是Method(ChildClass other)
。
但是,當我使用轉型:
return ((BaseClass<ChildClass>)this).Method(other as ChildClass);
一切正常。 我錯過了什麼?或者這是.NET中的錯誤? 測試在.NET 2.0,3.5,4.0
Thans很多。人在終身學習 – user829823