C# 如何替换一个列表的内容<;int>;从另一个来的?

C# 如何替换一个列表的内容<;int>;从另一个来的?,c#,winforms,arraylist,nullable,C#,Winforms,Arraylist,Nullable,我使用了两个可为null的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[]

我使用了两个可为null的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[]s改为list,还没有找到或想出如何完成同样的任务


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

您可以通过从现有列表构造新列表来执行浅层复制:

list2 = new List<int>(list1);
下面是另一种使用
for
循环的方法。这要求列表具有相同的长度,但您在问题中说明了这种情况

for (int i = 0; i < list1.Count; ++i)
{
    list2[i] = list1[i];
}
for(int i=0;i
您是否尝试过:

OriginalPterodactylVals.Clear();
ChangedPterodactylVals.ForEach(val => { OriginalPterodactylVal.Add(val); });

如果要从现有列表初始化新列表

List<int> a;
List<int> b = new List<int>(a);
列表a;
列表b=新列表(a);
这种方法利用接受
IEnumerable

注意:使用该构造函数,还可以从数组初始化列表

int[] a = new int[42];
List<int> b = new List<int>(a);
int[]a=新的int[42];
列表b=新列表(a);

构造函数
List(IEnumerable)
实现了类似的目标,尽管它创建了一个新的列表,而不是清除重新填充原始列表。只有在参考了原始列表的情况下才会有区别。只需指出相同点和不同点。如果某个内容已经引用了
OriginalPterodactylVals
,并且希望更新所指向的列表,则您的解决方案是正确的。我将此标记为答案,但要挑剔,“foreach”需要是“foreach”和“.add”需要是“.add”是的,很抱歉,我在语言和框架之间有点跳跃。好的,但这些是现有的列表;我不想创建一个新的变量…这是否可行:originalPetrodactylVals=changedPetrodactylVals?它将引用
changedPetrodactylVals
分配给变量
originalPetrodactylVals
,从而创建别名。这两个变量都指向同一个列表。更改一个列表,两个变量所指向的内容都会更改。
int[] a = new int[42];
List<int> b = new List<int>(a);