Не могу передать массив в другой класс

Есть класс наследующий от родительского, в родительском есть массив, который имеет get; set; Однако в дочернем классе он заполняется, а в родительском остается пустой. Пробовал так же с созданием структуры. То же самое.

Родительский класс:

internal ComputerStructForSend[] Computers = new ComputerStructForSend[5];

Дочерний:

Computers[countCompsAdded].cpu = Field[0].text;
                Computers[countCompsAdded].ram = Field[1].text;
                Computers[countCompsAdded].hardcount = Field[2].text;
                Computers[countCompsAdded].count = Field[3].text;
                Computers[countCompsAdded].year = Field[4].text;

В нем все заполняется, однако, из другого скрипта, эти стркутуры как и такие же массивы - пустые. Родительский класс отвечает за хранение данных. Что делается не так?


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

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

Вы не путаете случаем наследование в ООП и связи между объектами?

К примеру, пусть будет MyBase - родительский, MyClass - дочерний.

class Program
{
    static void Main(string[] args)
    {
        MyBase myBase = new MyClass(Enumerable.Range(0, 4).ToArray()); // [0, 1, 2, 3]
        Console.WriteLine("{0} {1}", myBase.GetType().Name, string.Join(", ", myBase.Numbers));
        Console.ReadKey();
    }
}

public class MyBase
{
    internal int[] _numbers;

    public int[] Numbers
    {
        get => _numbers;
        set => _numbers = value;
    }
}

public class MyClass : MyBase
{
    public MyClass(int[] numbers)
    {
        _numbers = numbers;
    }
}

Вывод в консоль

MyClass 0, 1, 2, 3

Так работает наследование, я ожидаемо не смог воспроизвести вашу проблему. Как видите, ваш вопрос не имеет ничего общего с наследованием.


Я допишу этот ответ, если вы предоставите более подробную информацию, ошибка в логике, возможно вы запутались в объектах, пишете массив в один экземпляр класса, а пытаетесь читать из другого, либо что-то еще может быть причиной, из показанного кода не ясно.

→ Ссылка