在我的程序中,我发现在将变量分配给另一个变量时,修改第一个变量,也会修改第二个变量。
示例:
using System;
using System.Collections.Generic;
using System.Windows.Forms;
namespace Dict_test
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void TestButton_Click(object sender, EventArgs e)
{
Dictionary<string, int> Dict1 = new Dictionary<string, int>();
Dict1.Add("one", 1);
Dict1.Add("two", 2);
Dictionary<string, int> Dict2 = new Dictionary<string, int>();
Dict2 = Dict1;
Dict1.Remove("two");
MessageBox.Show(Dict2["two"].ToString());
}
}
}
有没有办法确保在更改Dict1时Dict2不会改变。
如果可能,没有const Dict2
我来自一个蟒蛇环境,发现这非常令人不安
在此先感谢:)
答案 0 :(得分:3)
您目前正在做什么:
Dict2 = Dict1;
是引用复制,因此Dict1
和Dict2
都指向同一位置。您可以创建一个新副本,如:
Dict2 = Dict1.ToDictionary(d=> d.Key, d=> d.Value);
记住,如果您的Key
和Value
是自定义对象(基于某些类),那么您的第二个字典将引用与第一个相同的对象字典。见How do you do a deep copy of an object in .NET (C# specifically)?