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

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

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

Поясните пожалуйста, почему если при вызове метода Foo от типа B, в объекте класса FooImp вызывается метод от А ?
Листинг программы
  1. public class FooImp
  2. {
  3. public void Foo(A a)
  4. {
  5. Console.WriteLine("a");
  6. }
  7. public void Foo(B b)
  8. {
  9. Console.WriteLine("b");
  10. }
  11. }
  12. public class A
  13. {
  14. public void Foo(FooImp f)
  15. {
  16. f.Foo(this);
  17. }
  18. }
  19. public class B:A { }
  20. static void Main(string[] args)
  21. {
  22. var b = new B();
  23. b.Foo(new FooImp());
  24. }
Если посмотреть в дебагере на this внутри метода А.Foo то тип определяется как B.

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

textual
Листинг программы
  1.         public class A
  2.         {
  3.             public void Foo(FooImp f)
  4.             {
  5.                 Console.WriteLine(this.GetType());
  6.                 f.Foo(this);
  7.             }
  8.         }

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


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

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

10   голосов , оценка 3.7 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы