Как добавить объект в список объектов без ссылки в C #? - PullRequest
0 голосов
/ 06 ноября 2018

У меня есть созданный пользовательский тип в C #, который называется InfInt. Каждый объект InfInt имеет собственный список целых чисел, объявленных следующим образом:

public List<int> Numbers = new List<int>();

Затем в другом месте программы у меня есть цикл, в котором требуется временный объект InfInt. В конце цикла, когда временная InfInt была заполнена информацией, я хочу добавить этот объект в список InfInt объектов, который объявлен так: var ListOfLists = new List<InfInt>();. Следующий код добавляет временный объект InfInt в список ListOfLists объектов InfInt:

ListOfLists.Add(Temp);

Тогда, когда должна начаться новая итерация, мне, очевидно, нужно очистить данные во временном InfInt объекте. Для этого я использую следующий код:

Temp.Numbers.Clear();

Теперь приходит проблема. Когда я очищаю данные Temp, они очищаются и в ListOfLists ... Как это исправить?

Ответы [ 2 ]

0 голосов
/ 06 ноября 2018

InfInt - это ссылочный тип, который означает, что временная переменная InfInt указывает на объект. Когда вы добавляете его в список, а затем очищаете, содержимое этого экземпляра очищается.

В вашем цикле создайте новый экземпляр InfInt вместо повторного использования этого временного InfInt.

Вот документ MSDN , который описывает разницу между типом ссылки и типом значения.

0 голосов
/ 06 ноября 2018

Вместо очистки вашего Temp с помощью

Temp.Numbers.Clear();

Вы должны создать новый объект Temp

Temp = new InfInt();

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...