我使用了两个可以为空的int [] s:
int?[] OriginalPterodactylVals = new int?[NUMBER_OF_BABES_IN_TOYLAND];
int?[] ChangedPterodactylVals = new int?[NUMBER_OF_BABES_IN_TOYLAND];
...并且这段代码可以同步它们:
ChangedPterodactylVals.CopyTo(OriginalPterodactylVals, 0);
...但现在我已将int []更改为Lists,但尚未找到或想出如何完成同样的事情。
在将一个“复制并粘贴”到另一个中时,它们在列表中的值都相同。
答案 0 :(得分:6)
您可以通过从现有列表构建新列表来执行浅层复制:
list2 = new List<int>(list1);
请注意,这会创建一个 new 列表,而不是修改list2
最初引用的列表(如果有)。
这是一种使用AddRange
修改现有列表而不是创建新列表的方法:
list2.Clear();
list2.AddRange(list1);
这是使用for
循环的另一种方法。这要求列表具有相同的长度,但您声明在您的问题中就是这种情况。
for (int i = 0; i < list1.Count; ++i)
{
list2[i] = list1[i];
}
答案 1 :(得分:2)
你试过了吗?
OriginalPterodactylVals.Clear();
ChangedPterodactylVals.ForEach(val => { OriginalPterodactylVal.Add(val); });
答案 2 :(得分:2)
如果要从现有列表初始化新列表,
List<int> a;
List<int> b = new List<int>(a);
该方法利用接受List<T>
IEnumerable<T>
构造函数
http://msdn.microsoft.com/en-us/library/fkbw11z0.aspx
注意使用该构造函数,您还可以从数组
初始化列表int[] a = new int[42];
List<int> b = new List<int>(a);