.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);
            }
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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