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

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

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

Найдите и исправьте ошибки в методе Main
using System;
 
namespace Less05_task01
{
    class Program
    {
        static void Main( string[] args )
        {
            MyClass[] array = { new MyClass(), new MyClass(), new MyClass() };
            for ( int i = 0; i < array.GetLength( 0 ); i++ )
            {
                array[ i ].Method1();
                array[ i ].Method2();
            }
 
            IInterface[] BaseArray = array;
            for ( int i = 0; i < BaseArray.GetLength( 0 ); i++ )
            {
                BaseArray[ i ].Method1();
                BaseArray[ i ].Method2();
            }
 
            MyClass[] DerArray = BaseArray;
            for ( int i = 0; i < DerArray.GetLength( 0 ); i++ )
            {
                DerArray[ i ].Method1();
                DerArray[ i ].Method2();
            }
 
            Console.ReadKey();
        }
    }
 
    interface IInterface
    {
        void Method1();
    }
 
    class MyClass : IInterface
    {
        public void Method1()
        {
            Console.WriteLine("Method from Base");
        }
 
        public void Method2()
        {
            Console.WriteLine("Method from Derived");
        }
    }
}
Исправил на
using System;
 
namespace Less05_task01
{
    class Program
    {
        static void Main(string[] args)
        {
            MyClass[] array = { new MyClass(), new MyClass(), new MyClass() };
            for (int i = 0; i < array.GetLength(0); i++)
            {
                array[i].Method1();
                array[i].Method2();
            }
 
            IInterface[] BaseArray = array;
            for (int i = 0; i < BaseArray.GetLength(0); i++)
            {
                BaseArray[i].Method1();
                
            }
 
            MyClass[] DerArray = array;
            for (int i = 0; i < DerArray.GetLength(0); i++)
            {
                DerArray[i].Method1();
                DerArray[i].Method2();
            }
 
            Console.ReadKey();
        }
    }
 
    interface IInterface
    {
        void Method1();
    }
 
    class MyClass : IInterface
    {
        public void Method1()
        {
            Console.WriteLine("Method from Base");
        }
 
        public void Method2()
        {
            Console.WriteLine("Method from Derived");
        }
    }
}
При проверке на сайте, пишет не правильно, ошибку не указывает. В чём моя ошибка?
Помогите исправить ошибку

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

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

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


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

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

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