2

私は2つのnull許容int[]を使用していました:

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

...そしてそれらを同期するためのこのコード:

ChangedPterodactylVals.CopyTo(OriginalPterodactylVals, 0);

...しかし今、私はint []をリストに変更しましたが、同じことを達成する方法をまだ見つけていないか、理解していません。

一方が他方に「コピーされて貼り付けられる」とき、それらは両方ともリストに同じ量の値を持ちます。

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 に答える