创建字符串列表的精确副本

本文关键字:副本 字符串 列表 创建 | 更新日期: 2023-09-27 18:02:13

我可以在c#中创建一个列表的精确副本吗?

List<string> addedAttachments = new List<string>();
addedAttachments = (List<string>)HttpContext.Current.Session["UserFeedbackImage"];
List<string> tempList = addedAttachments;

以不同的顺序存储tempList

谢谢

创建字符串列表的精确副本

您只将第一个列表addadAttachments的引用赋值给一个新变量,但不创建新列表。

创建一个新列表只需调用

List<string> tempList = new List<string>(addedAttachments);

列表中字符串的顺序保持不变。


但请注意,这只适用于不可变类型,如string。对于复杂可变对象的列表,您可以将相同的对象添加到新列表中,因此如果您更改旧列表中对象的属性,"新列表中的对象"也会更改(它更改的对象)。因此,您可能还需要复制对象。

创建一个复制, 尝试Linq :

List<string> tempList = addedAttachments.ToList();

既然你有一个List<string>和字符串是不可变的,你可以这样做:

List<string> tempList = addedAttachments.ToList();

如果你的列表中有一个自定义对象,那么你应该寻找克隆。