-1

私は以下のコードを持っています:

Dictionary<string, string>[] Records = new Dictionary<string, string>[2];         
Dictionary<string, string> newFields = new Dictionary<string, string>();

newFields["Item"] = "M1";
newFields["Value"] = "V1";

Records[0] = newFields;

newFields["Item"] = "M2"; // This also changes values in Records[0]
newFields["Value"] = "V2";

Records[1] = newFields;

しかし、newFields を再度割り当てるとすぐに、Records[0]?????????????? の値も変更されます。

4

2 に答える 2

4

これは、newFieldsto Records[0]!の参照を代入しているためです。

これを試して:

/* .... */

Records[0] = new Dictionary<string, string>(newFields);

/* .... */
于 2013-03-04T07:22:13.593 に答える
3

Records[0] = newFields;その辞書のコピーではなく、参照を渡します。そのため、 と の両方が同じオブジェクトRecords[0]newFields指しています。

Dictionary既存のインスタンスのコピーを作成するには、次を使用します。

Records[0] = new Dictionary<string, string>(newFields);
于 2013-03-04T07:22:30.100 に答える