日期:2014-05-18 浏览次数:21142 次
void Main()
{
List<Student> A=new List<Student>
{
new Student{ Id=1, Name="Tim"},
new Student{ Id=2, Name="SCAUSCNU"}
};
List<Student> B=A;
List<Student> C=new List<Student>();
A.ForEach(a=>C.Add(a));
Console.WriteLine(A.Count()); //2
Console.WriteLine(B.Count()); //2
Console.WriteLine(C.Count()); //2
A.Add(new Student{ Id=3, Name="csdn"});
Console.WriteLine();
Console.WriteLine(A.Count()); //3
Console.WriteLine(B.Count()); //3 注意此处为何是3 ???
Console.WriteLine(C.Count()); //2
}
public class Student
{
public int Id{get;set;}
public string Name{get;set;}
}
------解决方案--------------------
1楼居然是黄色网站,嘎嘎
用第二种方法
第一种方法是直接把该a赋值给 b,把a的引用地址给了b,这个时候,如果a改变了,b也会跟着改变,因为b的地址就是a.
list<student> B=new list<student>();B=A; 和list<student> B=A 是一样的,都是把a的引用地址给了a,楼主可以看看值类型和引用类型相关的知识
第二种方法是把a集合中的值给了b,a的改变,和b没有关系了