Различия между ссылочными типами данных string и array (C#)
Возможно это глупый вопрос но до меня так и не доходит в чем же тут дело. У меня есть вот такой код:
using System;
class HelloWorld {
static void Main() {
int[] array = new int[1]{777};
Change(array);
Console.WriteLine(array[0]);
string text = "Etot text ne izmenitsya";
Change(text);
Console.WriteLine(text);
}
static void Change(int[] array)
{
array[0] = 666;
}
static void Change(string text)
{
text = "Change this";
}
}
Я пытаюсь понять как работают ссылочные и значимые типы данных. В моем случае я использую массив и строку и как я понимаю оба обьекта относятся к ссылочным типам данных, однако когда я передаю значения массива и меняю их в методе они меняют значение в куче (куда по логике попадают все данные ссылочных типов), а когда передаю строку и меняю ее в методе - изменений нет. Я понимаю что наверное я выгляжу крайне глупо, но я не понимаю как так происходит. Может ли кто обьяснить почему так?