本文共 1412 字,大约阅读时间需要 4 分钟。
开发中嵌套list数组碰到如下问题。比如说我是想做到list数组里有10个list<int>数组,每一个数组里的值是1,2,3,4,5,6,7,8,9,10
如下代码:
List> listlist = new List
>();private void Form1_Load(object sender, EventArgs e){ for (int i = 0; i < 10; i++) { List list = new List (); 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> listlist = new List
>();private void Form1_Load(object sender, EventArgs e){ for (int i = 0; i < 10; i++) { List list = new List (); for (int j = 0; j < 10; j++) { list.Add(j); } listlist.Add(list); }}
或者
List> listlist = new List
>();private void Form1_Load(object sender, EventArgs e){ for (int i = 0; i < 10; i++) { List list = new List (); List zanshi = new List (); for (int j = 0; j < 10; j++) { list.Add(j); } foreach (var item in list) { zanshi.Add(item); } listlist.Add(zanshi); list.Clear(); }}
转载地址:http://euulf.baihongyu.com/