克隆是一種淺拷貝的方式。字符串是一個引用類型。爲什麼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