关于将一个泛型集合中的数据赋给另一个泛型集合的问题

evaseemefly 2011-10-24 12:06:35
今天写程序的时候用到泛型集合,先前定义了一个泛型集合List<FilesInfo> filesList_A=new List<FilesInfo>()里面的FilesInfo是我记录的一些关于文件的信息。
如果我想再创建一个泛型集合的话,List<FilesInfo> filesList_B=new List<FilesInfo>()如果对B集合赋filesList_B=filesList_A的话,将A集合清空,filesList_A.Clear(),由于泛型集合是引用类型所以B集合也会被清空,那么如果我想在A集合清空之前将A中的数据全部赋给B的话,是否只能通过遍历的办法也就是foreach(FilesInfo file in filesList_A)
{ filesList_B.Add(file); } 。有没有其他的办法呢?谢谢大家,主要考虑到效率的问题。
...全文
465 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
youzelin 2011-10-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 findcaiyzh 的回复:]
FilesInfo是类,因此赋值的话也是 引用的赋值. managed heap上的东西并不动
。。。。。。
[/Quote]

这跟 T 类型是不是类没有关系,如果是 List<int> 一样会这样。


// 如果真要这么做,但是有不想麻烦的话,就直接使用 ToList 方法,
List<int> a = new List<int> { 1, 2, 3, 4 };
List<int> b = a.ToList();
a.Clear();
Console.WriteLine(b.Count);
二号匪 2011-10-24
  • 打赏
  • 举报
回复
协变与逆变
宝_爸 2011-10-24
  • 打赏
  • 举报
回复
FilesInfo是类,因此赋值的话也是 引用的赋值. managed heap上的东西并不动
List<FilesInfo> filesList_B=new List<FilesInfo>()
filesList_B=filesList_A
后,filesList_B和filesList_A都指向一个List<FilesInfo>对象。

List<FilesInfo> filesList_B=new List<FilesInfo>()
foreach(FilesInfo file in filesList_A)
{ filesList_B.Add(file); }
后,filesList_B和filesList_A指向不动的List<FilesInfo>对象。但是List<FilesInfo>中的Item都各自指向同同样的FilesInfo对象。也就是filesList_B[0]和filesList_A[0]指向同一个对象,依次类推。这样的赋值只是针对引用,并不是将整个FilesInfo对象进行复制,因此 对效率影响并不大。

110,535

社区成员

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

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

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