.NET 4.x Почему если при вызове метода Foo от типа B, в объекте класса FooImp вызывается метод от А? - C#
Формулировка задачи:
Поясните пожалуйста, почему если при вызове метода Foo от типа B, в объекте класса FooImp вызывается метод от А ?
Если посмотреть в дебагере на this внутри метода А.Foo то тип определяется как B.
public class FooImp
{
public void Foo(A a)
{
Console.WriteLine("a");
}
public void Foo(B b)
{
Console.WriteLine("b");
}
}
public class A
{
public void Foo(FooImp f)
{
f.Foo(this);
}
}
public class B:A { }
static void Main(string[] args)
{
var b = new B();
b.Foo(new FooImp());
}Решение задачи: «.NET 4.x Почему если при вызове метода Foo от типа B, в объекте класса FooImp вызывается метод от А?»
textual
Листинг программы
public class A
{
public void Foo(FooImp f)
{
Console.WriteLine(this.GetType());
f.Foo(this);
}
}