如何将一个List <int>的内容替换为另一个?</int>的内容?

时间:2012-05-16 21:43:45

标签: c# winforms arraylist nullable

我使用了两个可以为空的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,但尚未找到或想出如何完成同样的事情。

在将一个“复制并粘贴”到另一个中时,它们在列表中的值都相同。

3 个答案:

答案 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);