List巢狀List資料,全部List陣列一起更新問題
阿新 • • 發佈:2018-12-24
開發中巢狀list陣列碰到如下問題。比如說我是想做到list數組裡有10個list<int>陣列,每一個數組裡的值是1,2,3,4,5,6,7,8,9,10
如下程式碼:
List<List<int>> listlist = new List<List<int>>(); private void Form1_Load(object sender, EventArgs e) { for (int i = 0; i < 10; i++) { List<int> list = new List<int>(); for (int j = 0; j < 10; j++) { list.Add(j); } listlist.Add(list); list.Clear(); } }
可是設斷點到最後會發現,listlist陣列的count是有10個沒問題,但是裡面的List<int>的值不對,List<int>的count都是0。
這是因為使用區域性list變數新增到全域性變數listlist陣列中,全域性變數listlist陣列中的值是根據區域性變數list的值實時改變的,只要區域性變數發生改變,全域性變數也會發生改變。
修改後程式碼如下:只需要把list.Clear()方法刪除,如果說自己程式中需要用到list.Clear()方法不能刪除,也可以再新建個數組進行遍歷,但是不要再把它Clear哦!
List<List<int>> listlist = new List<List<int>>(); private void Form1_Load(object sender, EventArgs e) { for (int i = 0; i < 10; i++) { List<int> list = new List<int>(); for (int j = 0; j < 10; j++) { list.Add(j); } listlist.Add(list); } }
或者
List<List<int>> listlist = new List<List<int>>(); private void Form1_Load(object sender, EventArgs e) { for (int i = 0; i < 10; i++) { List<int> list = new List<int>(); List<int> zanshi = new List<int>(); for (int j = 0; j < 10; j++) { list.Add(j); } foreach (var item in list) { zanshi.Add(item); } listlist.Add(zanshi); list.Clear(); } }