日期:2014-05-17  浏览次数:20829 次

求解C#中list.Add()的添加原理
比如一个类People,
People p=new People();
List<People>lists=new List<People>();
lists.Add(p);
这个时候Lists[0]和p指的是同一个对象吗,改变lists[0],p的值会变吗?list的Add是复制对象副本还是只是一个引用,具体是怎么实现的?

------解决方案--------------------
引用类型 会改变的。
因为他们指向的是同一个对象。可以想象list里面有个数组,存的是添加进去对象的引用。
所以,你更改里面里面的对象,外面的P会改变,相应的,你更改外面p对象,list里面的也会修改。
------解决方案--------------------
探讨
比如一个类People,
People p=new People();
List<People>lists=new List<People>();
lists.Add(p);
这个时候Lists[0]和p指的是同一个对象吗,改变lists[0],p的值会变吗?list的Add是复制对象副本还是只是一个引用,具体是怎么实现的?

------解决方案--------------------
探讨
你可以查看List这个类,里面有一个索引器,目的就是让list用起来有数组的功能,一楼的回答加上2楼的代码可以让你很容易理解