怎样list A里面的所有对象赋值给另一个list B,为啥我有时可以直接用等号赋值,有时又必须要foreach循环赋值

昵称是可以中文吗 2012-07-25 04:12:14
怎样list<student> A里面的所有对象赋值给另一个list<student> B,为啥我有时可以直接用等号赋值,有时又必须要foreach循环赋值才能真正取到A中的所有对象?

是不是下面两种方法都可以?(有时觉得只能用第二种)

1.list<student> B=A; (应该和list<student> B=new list<student>();B=A;一样的?)

2.foreach(var item in B)
B.ADD(item);
...全文
5627 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
噢噢,原来是这样子,谢谢楼上两位
laokaizzz 2012-07-25
  • 打赏
  • 举报
回复
            //第一种
List<string> lsa = new List<string>();
lsa.Add("aa");
lsa.Add("bb");
List<string> lsB = new List<string>();
lsB = lsa;
lsa.Clear();
MessageBox.Show(lsB.Count.ToString());


//第二种
List<string> lsa = new List<string>();
lsa.Add("aa");
lsa.Add("bb");
List<string> lsB = new List<string>();
foreach (string var in lsa)
{
lsB.Add(var);
}
lsa.Clear();
MessageBox.Show(lsB.Count.ToString());
laokaizzz 2012-07-25
  • 打赏
  • 举报
回复
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没有关系了
q107770540 2012-07-25
  • 打赏
  • 举报
回复
第一种写法,A 和B指向相同的引用,当A改变时,B也会跟着改变
第二种写法,A的改变不会影响到B
q107770540 2012-07-25
  • 打赏
  • 举报
回复
第一种写法,A 和B指向相同的引用,当A改变时,B也会跟着改变
第二种守法,A的心迹不会影响到B

给你写了个DEMO,希望你能理解:


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;}
}

111,106

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧