Двумерный массив

1. user1843468 30.10.22 00:39 Сейчас в теме
Всем привет. Столкнулся со следующей проблемой. Имеется вот так такой кусок кода, который выполняется в цикле:
МассивДляЗначТипаОдногоРеквТЧ = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(Элемент, " - ");
МассивОднаСтрокаТЧ.Добавить(МассивДляЗначТипаОдногоРеквТЧ );
МассивДляЗначТипаОдногоРеквТЧ.Очистить();

Здесь "МассивДляЗначТипаОдногоРеквТЧ" - одномерный массив из двух элементов, МассивОднаСтрокаТЧ - двумерный массив, в который добавляется массив МассивДляЗначТипаОдногоРеквТЧ при каждой итерации. При отладке я обнаружил что, что после выполнения этой строки
МассивДляЗначТипаОдногоРеквТЧ.Очистить();
в массиве "МассивОднаСтрокаТЧ" также очищается вложенный массив, то есть при выполнении
МассивОднаСтрокаТЧ[0].Количество()
получу 0. Никак не могу понять, как это исправить, то есть мне нужно, чтобы вложенный массив не очищался. Буду благодарен за помощь
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. -AI- 30.10.22 00:57 Сейчас в теме
(1)
Никак не могу понять, как это исправить
почувствуйте разницу:
м=Новый Массив;
м.Добавить(Новый Массив);
м.Добавить(Новый Массив);
м.Добавить(Новый Массив);
м.Добавить(Новый Массив);
и
м1=Новый Массив;
м=Новый Массив;
м.Добавить(м1);
м.Добавить(м1);
м.Добавить(м1);
м.Добавить(м1);
в первом случае у нас каждый элемент массива - это РАЗНЫЕ объекты (тоже массивы)
а во втором, каждый элемент массива - это ОДИН И ТОТ же массив,
не копии одного массива, а один и тот же.
(фактически, в массиве первого уровня лежать ссылки на один и тот же массив,
как два окна на одну и туже улицу, если вы плюните в одно окне на пешехода, то в другом будет уже тот же оплеванный пешеход)
user1863362; +1 Ответить
5. user1863362 30.10.22 09:42 Сейчас в теме
(2)
два окна на одну и туже улицу, если вы плюните в одно окне на пешехода, то в другом будет уже тот же оплеванный пешеход

Великолепная аналогия, спасибо.
3. spacecraft 30.10.22 01:12 Сейчас в теме
(1)
МассивОднаСтрокаТЧ.Добавить(МассивДляЗначТипаОдногоРеквТЧ );

заменить на:
МассивОднаСтрокаТЧ.Добавить(Новый Массив(Новый ФиксированныйМассив(МассивДляЗначТипаОдногоРеквТЧ)));
4. -AI- 30.10.22 01:19 Сейчас в теме
(3) лучше заменить
МассивДляЗначТипаОдногоРеквТЧ.Очистить();
на
МассивДляЗначТипаОдногоРеквТЧ=Новый Массив;
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот