私がこれを持っているとしましょう:
class A { }
class B : A { }
class C : B { }
class Foo
{
public void Bar(A target) { /* Some code. */ }
}
class AdvancedFoo : Foo
{
public void Bar(B target)
{
base.Bar(target);
// Some code.
}
}
sealed class SuperiorFoo : AdvancedFoo
{
public void Bar(C target)
{
base.Bar(target);
// Some code.
}
}
実行するとどのオーバーロードが呼び出され、new SuperiorFoo().Bar(new C())
その理由は? カスケード的に呼び出されると思いますが、その動作が保証されている理由とその動作が保証されているかどうかはわかりません。
更新しました
では、とforのbase.
両方で機能します。どちらが呼び出されるのでしょうか。なぜですか?Foo
AdvancedFoo
SuperiorFoo