Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 19.11.2014
Сообщений: 16

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

26.02.2015, 10:17. Показов 938. Ответов 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
912 / 816 / 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
912 / 816 / 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
912 / 816 / 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
Ответ Создать тему
Новые блоги и статьи
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru