基本クラスがありますA
public class A
{
public virtual void Method(A parameter)
{
Console.WriteLine(MethodBase.GetCurrentMethod());
}
public virtual void Method(B parameter)
{
Console.WriteLine(MethodBase.GetCurrentMethod());
}
}
内在B
public class B : A
{
public virtual void Method(object parameter)
{
Console.WriteLine(MethodBase.GetCurrentMethod());
}
public override void Method(A parameter)
{
Console.WriteLine(MethodBase.GetCurrentMethod());
}
public override void Method(B parameter)
{
Console.WriteLine(MethodBase.GetCurrentMethod());
}
}
S
拡張メソッドを持つ静的クラス
public static class S
{
public static void Method(this B instance, B parameter)
{
Console.WriteLine(MethodBase.GetCurrentMethod());
}
}
タイプのインスタンスを作成してそれをB
呼び出す例では、実際の結果はです。Method
public override void Method(B parameter)
public virtual void Method(object parameter)
var b = new B();
b.Method(new B()); // B.Method (Object parameter) Why???
コンパイラがより適切な方法を選択しないのはなぜですか? UPDそしてなぜそれは拡張メソッドではないのですか?