Клон является способом мелкой копии. string - ссылочный тип. почему изменение 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 + ",";
}
}
}
выходов: а, б, а, е, когда неполная копия, он должен быть: а, е, а, е
но s2 = s1 это worked.when изменить s2, s1 изменить слишком – SleeplessKnight
это важно понимать, что назначение s2 в s1 не неполную копию, а сделать точку s2 в s1, s2 эффективно делает указатель. Неглубокая копия означала бы создание нового массива и копирование указателей на каждый объект на новый массив. – Qwerty01
Кто-нибудь знает, как поставить вопрос в качестве вопроса для голосования, я смущен ответами – SleeplessKnight