Как индексировать массив пользовательского типа?

Задание: написать operator для сложения множеств. Есть пользовательский класс целых чисел Znumbers. Нужно выполнить объединение множеств.

Выполняю в порядке:

  1. ввести с клавиатуры длину 2-х массивов
  2. заполнить массивы
  3. объединить массивы

Я не понимаю, как в операторе public static Znumbers operator +() индексировать Array1 и Array2, чтобы не вылетала ошибка

"CS021 Не удаётся применить индексирование через [] к выражению типа Znumbers"

public class Znumbers
    {
        public int[] Array;

        public Znumbers(int[] array) // конструктор                           
        { Array = array; }


        public int Length
        { get { return Array.Length; } }

        int length; 


        // МЕТОД ДЛЯ ЗАПОЛНЕНИЯ МАССИВОВ И УКАЗАНИЯ КОЛ-ВА ЭЛ-ОВ
        public void FillArray()
        {
            Console.WriteLine("Please enter the length of the array");
            length = Convert.ToInt32(Console.ReadLine());

            // ЗАПОЛНЯЕМ Array
            for (int i = 0; i < length; i++)
            {
                Array[i] = int.Parse(Console.ReadLine());
            }
        }


        //  ВЫВОДИМ НА ЭКРАН МАССИВ
        public void Print()
        {
            Console.WriteLine("Your array:");
            for (int i = 0; i < length; i++)
            {
                Console.WriteLine(Array[i]);
            }
        }

           // ОБЪЕДИНЕНИЕ МНОЖЕСТВ

        public static Znumbers operator +(Znumbers Array1, Znumbers Array2)

        {

            //???

            int[] Array3 = new int[Array1.Length + Array2.Length];

            int j = 0;

            for (int i = 0; i < Array1.Length; i++, j++)
                Array3[j] = Convert.ToInt32(Array1[i]);  // 

            for (int i = Array1.Length; i < Array2.Length; i++, j++)
                Array3[j] = Convert.ToInt32(Array2[i]);

            return new Znumbers(Array3);
        }
    }

Main:

    {
        static void Main(string[] args)
        {
            int[] a = new int[10];
            int[] b = new int[10];
  
            Znumbers massiv1 = new Znumbers(a);
            Znumbers massiv2 = new Znumbers(b);
            Znumbers massiv3;
            massiv3 = massiv1 + massiv2;  // объединение массивов
            Console.WriteLine(massiv3);
           
            Console.ReadLine();
        }
    }

Индексирование типа такого:

 int [] array = { 1,2,3 }
        public int this[int number]
        { 
            get
            {
                for (int i = 0; i < array.Length; i++}
                    return j;
            }
            return -1
         }

Не понимаю, как индексировать пользовательский тип данных (Znumbers) с заполнением массива с клавиатуры.

Направьте, пожалуйста, в какую сторону хотя бы смотреть.


Ответы (1 шт):

Автор решения: KuzCode

Это элементарно. Есть 2 варианта:

Первый: просто образатся по индексу к полю Array:

...Array1.Array[i]...

Второй: добавить возможность индексирования классу Znumbers:

public class Znumbers
{
    ...

    public int this[int i]
    {
        get { return Array[i]; }
        set { Array[i] = value; }
    }
    
    ...
}
→ Ссылка