Ковариантность (и контрвариантность) массивов - C#

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

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

Найдите и исправьте ошибки в методе Main
Листинг программы
  1. using System;
  2. namespace Less05_task01
  3. {
  4. class Program
  5. {
  6. static void Main( string[] args )
  7. {
  8. MyClass[] array = { new MyClass(), new MyClass(), new MyClass() };
  9. for ( int i = 0; i < array.GetLength( 0 ); i++ )
  10. {
  11. array[ i ].Method1();
  12. array[ i ].Method2();
  13. }
  14. IInterface[] BaseArray = array;
  15. for ( int i = 0; i < BaseArray.GetLength( 0 ); i++ )
  16. {
  17. BaseArray[ i ].Method1();
  18. BaseArray[ i ].Method2();
  19. }
  20. MyClass[] DerArray = BaseArray;
  21. for ( int i = 0; i < DerArray.GetLength( 0 ); i++ )
  22. {
  23. DerArray[ i ].Method1();
  24. DerArray[ i ].Method2();
  25. }
  26. Console.ReadKey();
  27. }
  28. }
  29. interface IInterface
  30. {
  31. void Method1();
  32. }
  33. class MyClass : IInterface
  34. {
  35. public void Method1()
  36. {
  37. Console.WriteLine("Method from Base");
  38. }
  39. public void Method2()
  40. {
  41. Console.WriteLine("Method from Derived");
  42. }
  43. }
  44. }
Исправил на
Листинг программы
  1. using System;
  2. namespace Less05_task01
  3. {
  4. class Program
  5. {
  6. static void Main(string[] args)
  7. {
  8. MyClass[] array = { new MyClass(), new MyClass(), new MyClass() };
  9. for (int i = 0; i < array.GetLength(0); i++)
  10. {
  11. array[i].Method1();
  12. array[i].Method2();
  13. }
  14. IInterface[] BaseArray = array;
  15. for (int i = 0; i < BaseArray.GetLength(0); i++)
  16. {
  17. BaseArray[i].Method1();
  18. }
  19. MyClass[] DerArray = array;
  20. for (int i = 0; i < DerArray.GetLength(0); i++)
  21. {
  22. DerArray[i].Method1();
  23. DerArray[i].Method2();
  24. }
  25. Console.ReadKey();
  26. }
  27. }
  28. interface IInterface
  29. {
  30. void Method1();
  31. }
  32. class MyClass : IInterface
  33. {
  34. public void Method1()
  35. {
  36. Console.WriteLine("Method from Base");
  37. }
  38. public void Method2()
  39. {
  40. Console.WriteLine("Method from Derived");
  41. }
  42. }
  43. }
При проверке на сайте, пишет не правильно, ошибку не указывает. В чём моя ошибка?
Помогите исправить ошибку

Решение задачи: «Ковариантность (и контрвариантность) массивов»

textual
Листинг программы
  1. MyClass[] DerArray = (MyClass[])BaseArray;

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


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

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

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

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

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

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