2

我使用了两个可为空的 int[]:

int?[] OriginalPterodactylVals = new int?[NUMBER_OF_BABES_IN_TOYLAND];
int?[] ChangedPterodactylVals = new int?[NUMBER_OF_BABES_IN_TOYLAND];

...以及用于同步它们的代码:

ChangedPterodactylVals.CopyTo(OriginalPterodactylVals, 0);

...但是现在我已经将 int[]s 更改为 Lists 并且还没有找到或想出如何完成同样的事情。

当一个被“复制并粘贴”到另一个时,它们在列表中将具有相同数量的值。

4

3 回答 3

7

您可以通过从现有列表构建新列表来执行浅拷贝:

list2 = new List<int>(list1);

请注意,这会创建一个列表,而不是修改list2最初引用的列表(如果有的话)。

这是一种使用AddRange而不是创建新列表来修改现有列表的方法:

list2.Clear();
list2.AddRange(list1);

这是另一种使用for循环的方法。这要求列表具有相同的长度,但您表示您的问题就是这种情况。

for (int i = 0; i < list1.Count; ++i)
{
    list2[i] = list1[i];
}
于 2012-05-16T21:45:38.983 回答
2

你有没有尝试过:

OriginalPterodactylVals.Clear();
ChangedPterodactylVals.ForEach(val => { OriginalPterodactylVal.Add(val); });
于 2012-05-16T21:46:46.810 回答
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);
于 2012-05-16T21:46:50.133 回答