类的引用及添加到列表中的问题

众所周知,引用类型和值类型的存储分别在于堆和栈上面。不同的是,引用类型创建时分配的空间是固定的,值类型则是由CPU管理。

错误代码:在循环时把类创建放在了外面,此时表中添加的类指向同一个地址,而且更改该类的值,表中所有的值同时更改。

private class T {int id;}
List<T> T_PCBTest_Result = new List<T>();
T data = new T();
int i = 0;
while(i < 100) {   data = i++;   T_PCBTest_Result.Add(data); }

 正确代码:

private class T {int id;}
List<T> T_PCBTest_Result = new List<T>();
int i = 0;
while
(var item in objList) {   T data = new T();   data.id = i++;   T_PCBTest_Result.Add(data); }

 除此之外,两个同类型引用型变量之间如果直接使用等号进行赋值时,指向的空间是同一片空间

List<TPCBTestResultPage> objList = m_TPCBTestResultService.GetTPCBTestResult(PageData).RDisplay;
List<TPCBTestResultPage> distinct = new List<TPCBTestResultPage>();
distinct = objList;

所以想要把表中的的内容拷贝出来就需要使用类中的添加函数

List<TPCBTestResultPage> objList = m_TPCBTestResultService.GetTPCBTestResult(PageData).RDisplay;
List<TPCBTestResultPage> distinct = new List<TPCBTestResultPage>();
distinct.AddRange(objList);
posted @ 2018-11-16 17:09  陈浩楠  阅读(425)  评论(0编辑  收藏  举报