Это мой первый опыт работы с коллекциями, и я застрял здесь, я сделал тестовый проект, чтобы проверить его, и я столкнулся с проблемой, я не знаю, как работать.Списки внутри списка в C#
Во-первых, то, что я хочу сделать, в частности, со списками (не могу использовать что-нибудь еще), чтобы иметь большое список с целыми списками внутри, как это:
List<List<int>> Allnums = new List<List<int>>();
Числа я хочу добавить предыдущий список собраны здесь:
List<int> nums = new List<int>();
Пока что так хорошо.
мне нужно добавить на неопределенное время раз списки (Nums) в мой основной список (Allnums), так что я не могу создать nums1, nums2, num3 ... и т.д.
Ok, позволяет попробовать добавить случайное число Nums: (только 1 номер на данный момент)
Random rnd = new Random();
private void button1_Click(object sender, EventArgs e)
{
nums.Add(rnd.Next(10));
}
Теперь, позволяет сохранить номер, который был сгенерирован и ясно перечислить НУМС сохранить новый новый номер в следующий раз (Давайте магазин 4 списков только).
private void button2_Click(object sender, EventArgs e)
{
Allnums.Add(nums); //adds the minor list to the major list.
nums.Clear(); //clears the minor list to accept new values.
}
Позволяет проверить результаты с этим кодом:
private void button3_Click(object sender, EventArgs e)
{
listBox1.Items.Clear();
listBox1.Items.Add("Number of lists entered: " + Allnums.Count);
foreach (List<int> numList in Allnums)
{
listBox1.Items.Add("----------"); //separator to divide the lists
foreach(int number in numList)
{
listBox1.Items.Add(number);
}
}
}
я получаю это:
Number of lists entered: 4 //OK
---------- //List1: nothing
---------- //List2: nothing
---------- //List3: nothing
---------- //List4: nothing
Как вы видите, все числа, генерируемые не там. Но если я удалю 'nums.Clear();' в случае «button2_Click», я получаю это:
Number of lists entered: 4 //OK
---------- //List1
0
5
9
1
----------//List2
0
5
9
1
----------//List3
0
5
9
1
----------//List4
0
5
9
1
//All wrong
Он хранил все значения, но в неправильном направлении, потому что я хочу, чтобы достичь это:
Number of lists entered: 4
----------//List1
0
----------//List2
5
----------//List3
9
----------//List4
1
Я ошибаюсь? Нужно ли мне что-то делать? Пожалуйста, помогите, спасибо за чтение.
'List' - ссылочный тип (аналогично указателям на других языках). Вам нужно снова «новый список» вместо «Очистить», чтобы он был * новым * списком. – crashmstr
'Allnums' поддерживает только ссылки на ваши другие списки, поэтому, когда вы' .Clear() 'them, данные будут удалены. Сохранение ссылок на каждый из списков 'nums' в' Allnums' вообще не меняется. Как точно исправить это зависит от того, что вы пытаетесь сделать. Какова конечная цель здесь? –