克隆是一种浅拷贝的方式。字符串是一个引用类型。为什么s2的变化不会影响s1?方法Array.Clone是浅拷贝?
private void button3_Click(object sender, EventArgs e)
{
string[] s1 = { "a", "b" };
string[] s2 = new string[2];
s2 = (string[])s1.Clone();
//s2=s1; //when Direct assignment s1 changed too
s2[1] = "e";
foreach (var s in s1)
{
this.richTextBox1.Text += s+",";
}
this.richTextBox1.Text += System.Environment.NewLine;
foreach (var s in s2)
{
this.richTextBox1.Text += s + ",";
}
}
}
输出: A,B, A,E, 时浅拷贝,它应该是:A,E,A,E
但S2 = S1它worked.when改变S2,S1变化太大 – SleeplessKnight
是要认识到,以S1 S2分配不浅拷贝是很重要的,而是让S2点S1,有效地使S2的指针。浅拷贝意味着创建一个新数组并将指向每个对象的指针复制到新数组中 – Qwerty01
任何人都知道如何将问题作为投票问题,我对这个问题感到困惑 – SleeplessKnight