- C# IList 在循环内只新增一次
一、先给现象:
public class Person
{
public string Name{get;set;}
public int age{get;set;}
}
pubclic class PersonName
{
public string Name{get;set;}
}
IList<PersonName> nameList = new List<PersonName>();
//造数据演示
nameList.Add(New PersonName{Name="小雷"});
nameList.Add(New PersonName{Name="小峰"});
IList<Person> personList = new List<Person>();
Person newpeople = new Person();
newpeople.age = 2;
foreach(var name in nameList)
{
newpeople.Name = name;
personList.Add(newpeople)
}
//此时personList.count = 1; 里面的数据是:Person{age=2,Name="小峰"}
//因为在迭代中第一个Name小雪被第二Name"小峰"替代了
二、解析:
newpeople指的是一块区域,只有一块。在循环迭代中List.Add()加的是同一块区域,相当于对一块区域重复做更新操作。

正确写法如下:
IList<Person> personList = new List<Person>();
foreach(var name in nameList)
{
Person newpeople = new Person();
newpeople.age = 2;
newpeople.Name = name;
personList.Add(newpeople)
}
后端创建EXCEL,Word文档
NPOI库