1. 程式人生 > >List巢狀List資料,全部List陣列一起更新問題

List巢狀List資料,全部List陣列一起更新問題

開發中巢狀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();
    }
}