0 / 0 / 0
Регистрация: 19.11.2014
Сообщений: 16

Как сделать так, что бы после обновления первого List<> он не менялся во втором

26.02.2015, 10:17. Показов 968. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, подскажите пожалуйста, как сделать так, что бы после обновления первого списка он не менялся во втором. то есть чтобы на выходе было 123546, а не 546546

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
List<int> l1 = new List<int>();
            List<List<int>> l2 = new List<List<int>>();
 
            l1.Add(1);
            l1.Add(2);
            l1.Add(3);
 
            l2.Add(l1);
 
            l1.Clear();
 
            l1.Add(5);
            l1.Add(4);
            l1.Add(6);
            l2.Add(l1);
 
            foreach (var z in l2)
            {
                foreach (int x in z)
                {
                    Console.WriteLine("- {0}", x);
                }
            }
 
            Console.ReadKey();
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.02.2015, 10:17
Ответы с готовыми решениями:

Как сделать так что бы при нажатии на один из img менялся стиль?
Есть несколько img &lt;p ng-repeat=&quot;photo in photos&quot; &gt; &lt;img class=&quot;imgMain&quot; src=&quot;{{photo.src}}&quot; alt=&quot;{{photo.desc}}&quot;...

как сделать так, чтобы условие с if после первого if работали дальше, что-то никак не пойму
#include &lt;stdio.h&gt; int main(void) { int mass; int i, j; for (i=0;i&lt;4;++i){ for (j=0; j&lt;4; ++j) scanf(&quot;%d&quot;,...

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

11
18 / 18 / 9
Регистрация: 23.02.2015
Сообщений: 86
26.02.2015, 10:25
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
List<int> l1 = new List<int>();
            List<List<int>> l2 = new List<List<int>>();
            l1.Add(1);
            l1.Add(2);
            l1.Add(3);
            l2.Add(l1);
            l1 = new List<int>();
            l1.Clear();
            l1.Add(5);
            l1.Add(4);
            l1.Add(6);
            l2.Add(l1);
 
            foreach (var z in l2)
            {
                foreach (int x in z)
                {
                    Console.WriteLine("- {0}", x);
                }
            }
 
            Console.ReadKey();
0
18 / 18 / 9
Регистрация: 21.02.2015
Сообщений: 81
26.02.2015, 10:27
Зачем вам List<List<int>> ?
C#
1
l2.Add(l1);
Вы добавляете ссылку на переменную l1, меняя данные в l1 они поменяются и в l2.

то что вам нужно делается вот так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
            List<int> l1 = new List<int>();
            List<int> l2 = new List<int>();
 
            l1.Add(1);
            l1.Add(2);
            l1.Add(3);
 
            l2.AddRange(l1);
 
            l1.Clear();
 
            l1.Add(5);
            l1.Add(4);
            l1.Add(6);
 
            l2.AddRange(l1);
 
            foreach (var z in l2)
            {
                Console.WriteLine("- {0}", z);
            }
 
            Console.ReadKey();
0
 Аватар для Sanya_sa
913 / 817 / 333
Регистрация: 03.02.2015
Сообщений: 5,276
Записей в блоге: 9
26.02.2015, 10:29
c3p0, Странный код и по моему принципиально не правильнй подход. Опишите задачу подскажу. Вы же в строке 10 очищаете l1, а затем его снова заполняете)). И для чего вам вложеные циклы?
0
18 / 18 / 9
Регистрация: 23.02.2015
Сообщений: 86
26.02.2015, 10:31
Цитата Сообщение от DviiK Посмотреть сообщение
Вы добавляете ссылку на переменную l1, меняя данные в l1 они поменяются и в l2.
читайте внимательнее условие
0
 Аватар для Sanya_sa
913 / 817 / 333
Регистрация: 03.02.2015
Сообщений: 5,276
Записей в блоге: 9
26.02.2015, 10:36
Стоп. Ваще то new вызывает конструктор. Давайте дождемся задачи от автора и посмотрим как ее правильно решить.
0
11 / 11 / 3
Регистрация: 29.12.2010
Сообщений: 50
26.02.2015, 22:13
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
List<int> l1 = new List<int>();
            List<List<int>> l2 = new List<List<int>>();
 
            l1.Add(1);
            l1.Add(2);
            l1.Add(3);
 
            l2.Add(l1);
 
            l1= new List<int>();
 
            l1.Add(5);
            l1.Add(4);
            l1.Add(6);
            l2.Add(l1);
 
            foreach (var z in l2)
            {
                foreach (int x in z)
                {
                    Console.WriteLine("- {0}", x);
                }
            }
 
            Console.ReadKey();
При вызове l2.Add(l1) вы добавляете в l2 ссылку на l1. При этом копия не создается. Поэтому после вызова Clear() в l2 лежит пустой список, а затем в снова в него же добавляете новые элементы.
0
 Аватар для Sanya_sa
913 / 817 / 333
Регистрация: 03.02.2015
Сообщений: 5,276
Записей в блоге: 9
26.02.2015, 23:01
xameli0n, я просто думал что применив new мы вызовом конструктор по умолчанию и соответственно он очистит список), а ссылка как была l1 так и осталась l1. Ладно разберусь а все вчитался мы о разных вещах говорим))))
0
18 / 18 / 9
Регистрация: 21.02.2015
Сообщений: 81
27.02.2015, 08:41
Sanya_sa, Конструктор не отчистит список, он создаст новую ссылку на новую переменную. Там уже и .Clear(); не нужен.

Добавлено через 1 час 3 минуты
Точней это делает не конструктор, а оператор new. Конструктор будет вызываться при создании новой переменной.
1
18 / 18 / 9
Регистрация: 23.02.2015
Сообщений: 86
27.02.2015, 08:44
В общем как там происходит: создается массив в котором ссылки на другие массивы. Далее создаются два массива. В них помещаются элементы. Затем эти два массива помещаются в массив в котором ссылки на другие массивы. Если изменить содержимое массива элементов, изменится и содержимое List<List<int>>. Оператор new создает в куче новый объект со своим уникальным адресом. Переменные-это просто ссылки на объекты в куче.
0
18 / 18 / 9
Регистрация: 21.02.2015
Сообщений: 81
27.02.2015, 10:07
Сомневаюсь что автору нужна такая реализация. И List<List<int>> тут только для того чтоб компилятор не ругался когда в один лист добавляется другой.
0
431 / 385 / 200
Регистрация: 12.08.2011
Сообщений: 1,610
28.02.2015, 20:19
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
using System;
using System.Collections.Generic;
 
static class Program
{
    static public void Main(String[] args)
    {
        List<int>[] lists = { new List<int>(), new List<int>() };
        
        List<int> current_list = lists[0];
        current_list.Add(1);
        current_list.Add(2);
        current_list.Add(3);
        
        current_list = lists[1];
        current_list.Add(5);
        current_list.Add(4);
        current_list.Add(6);
        
        foreach (List<int> i in lists)
        {
            foreach (int j in i)
            {
                Console.Write(j);
            }
        }
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.02.2015, 20:19
Помогаю со студенческими работами здесь

как сделать так чтоб менялся только ul.menu li a
есть такой CSS ul.menu li a { font-family: Tahoma, Geneva, sans-serif; text-decoration: none; background: #556A73; ...

Как сделать так что бы в Listview1 во втором столбце информация отображалась символом "*"
Есть listview с двумя столбцами. Первый - логин, второй - Пароль. Как сделать так что бы в Listview1 во втором столбце (Пароль)...

Как сделать так, чтоб при нажатии на кнопку менялся цвет формы?
Lazarus. Сначала на голубой, потом при нажатии на ту же кнопку на фиолетовый и на серый? Заранее всем спасибо!

Как сделать так чтобы минимальный элемент среди элементов с положительным значением менялся?
Как сделать так чтобы минимальный элемент среди элементов с положительным значением менялся? Само задание - в заданной матрице поменять...

Как сделать так, чтобы файл вывода менялся, если изменится имя библиотеки (DLL)?
Есть библиотека с именем example.dll Как сделать так, чтобы файл вывода менялся, если изменится имя библиотеки? В main с такой...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

Новые блоги и статьи
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru