.NET 4.x Почему если при вызове метода Foo от типа B, в объекте класса FooImp вызывается метод от А? - C#

Узнай цену своей работы

Формулировка задачи:

Поясните пожалуйста, почему если при вызове метода Foo от типа B, в объекте класса FooImp вызывается метод от А ?
        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());
        }
Если посмотреть в дебагере на this внутри метода А.Foo то тип определяется как B.

Решение задачи: «.NET 4.x Почему если при вызове метода Foo от типа B, в объекте класса FooImp вызывается метод от А?»

textual
Листинг программы
        public class A
        {
            public void Foo(FooImp f)
            {
                Console.WriteLine(this.GetType());
                f.Foo(this);
            }
        }

ИИ для рефератов и докладов


  • Экспорт Word по ГОСТу
  • Минимум 80% уникальности текста
  • Поиск релевантных источников в интернете
  • Готовый документ за 2 минуты

Оцени полезность:

10   голосов , оценка 3.7 из 5
Похожие ответы