這是我第一次使用集合和Im在這裏停留,我做了一個測試項目來檢查它,我遇到一個問題,我不知道如何解決。在C#中的列表中列出的列表#
首先,我要特別做列表(不能使用別的),是具有整數列出了各大榜單裏面,像這樣:
List<List<int>> Allnums = new List<List<int>>();
的數字我想添加到以前的清單收集在這裏:
List<int> nums = new List<int>();
到目前爲止,這麼好。
我需要無限期的時間列表(NUMS)添加到我的專業名單(Allnums),所以我不能創建nums1,nums2,NUM3 ...等
好吧,讓我們嘗試添加一個隨機數NUMS: (只有1個,現在數量)
Random rnd = new Random();
private void button1_Click(object sender, EventArgs e)
{
nums.Add(rnd.Next(10));
}
現在,讓我們保存已生成的數量和清除NUMS列出新的一個新的號碼在下一次存儲(讓店裏只有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'是一個引用類型(類似於其他語言的指針)。您需要再次使用「新List」而不是「Clear」,以便它成爲* new *列表。 – crashmstr 2014-10-10 17:09:02
'Allnums'只保留對其他列表的引用,所以當你清除()'它們時,數據將被刪除。對Allnums中每個'nums'列表的引用保持不變。如何解決這種問題取決於你想要做什麼。這裏的最終目標是什麼? – 2014-10-10 17:20:11