I think私はここで何が起こっているのか分かっていますが、私はいくつかの確認をしたいと思います。 (コードは質問の最下部にあります)C#Listはオブジェクトのコンテナではないポインタとして扱われます
私はコピーを作成する必要があるリストオブジェクトを持っています。
新規作成同じタイプのリストで、 '='オペランドを使用して、AddRangeメソッドでもテストして同じ結果が得られました。
リストのコピーをどのように操作しても、操作は元のものにも適用されます。
私はC#がオブジェクト/値ではなく参照/ポインタ構造としてリストを使用しているからだと思います。これは正しいです?
temp1.AddRange(list1);
temp2.AddRange(list2);
foreach(record item in temp1)
{
foreach (KeyValuePair<string, string> itemB in temp2.First().data)
{
item.data.Add(itemB.Key, null);
ERRORDATA = "item data state:" + item.ToString() + "\r\nitemB key:[" + itemB.Key + "] " + itemB.Value;
}
}
temp1.First().data.Add("DOOBY", "doo");
これが実行した後、それはがのみTEMP1オブジェクトにそれを行っている必要があるとき、LIST1はdooby、斗のキー/値のペアを挿入しました。
すべての回答に対する歓声。
はい、 'List'は参照型であり、値型ではありません。 'x.GetType()。IsValueType'を使用して、オブジェクトに値型セマンティクスがあるかどうかを判断します。主な例外は、value型セマンティクスで動作する参照型である 'System.String'です。 –
Enigmativity
"実行可能にコピー&ペースト"するコードを投稿すると非常に便利です。今、それは秘密のクロスワードの手がかりのようです。 – Enigmativity
確認のために乾杯、私はそれが何かのように思ったが、100%確実ではなかった。 – Slipoch