class a
{
public int m=0;
} a c1 = new a();
List<a> list = new List<a>();
list.Add(c1);
c1 = new a();
list.Add(c1);
c1.m = 3;现在list中有两个值 0 3
List的插入是复制后插入,那为什么c1还可以修改已经插入到list中的元素的值呢?
{
public int m=0;
} a c1 = new a();
List<a> list = new List<a>();
list.Add(c1);
c1 = new a();
list.Add(c1);
c1.m = 3;现在list中有两个值 0 3
List的插入是复制后插入,那为什么c1还可以修改已经插入到list中的元素的值呢?
例如c1应用的a 地址01
因为要插入(Add) 复制a到地址02 再将02地址的a插入到list
List <a> list = new List <a>(); list.Add(c1);
c1 = new a(); // 此时 c1 指向了新的对象,所以:
c1.m = 2; // 对 c1 的修改并不能影响已经添加到 List 中的元素 list.Add(c1); // 又增加一个元素到 List 中
c1.m = 3; // 对 c1 修改会反映到 List 的元素中
c1 = new a(); // 此时 c1 指向了新的对象,如果这之后再对 c1 的修改,并不能影响已经添加到 List 中的元素