Я знаю, что строки неотменяемы, после создания мы не можем его изменить, я прочитал, что если мы создадим новый строковый объект и присвоим ему значение, а затем мы назначим другое значение одному и тому же строковому объекту внутри, объект, созданный и назначенный новым значением. Скажем, у меня есть:Как работает строка в C#?
string str = "dog";
str = "cat";
Если я пишу Console.WriteLine(str);
возвращает cat
. Итак, внутри есть два объекта? Но у них одно и то же имя? Как это работает? Я сделал некоторые исследования в Google, но я не нашел для меня достаточно убедительного мнения, поэтому я могу прояснить свои мысли об этом. Я знаю, что строки являются ссылочными типами, поэтому у нас есть объект в стеке со ссылкой на значение в куче, что происходит в этом случае? (См. Код выше).
Я загрузил фотографию, извинись, если я ошибаюсь в идее стека и кучи, поэтому я задаю этот вопрос. Отображает ли изображение то, что происходит в первой строке кода (string str = "dog";
)? А потом что должно произойти во второй строке кода? Значение dog
в куче меняется? А затем создается новый объект в стеке, ссылающийся на него? Тогда что происходит с объектом, который был там раньше? У них одно и то же имя? Прошу прощения за столько вопросов, но я думаю, что очень важно правильно понять это и узнать, что происходит за кулисами ...
Мне очень сложно выбрать ответ, потому что все ваши ответы были очень описательными, теперь я выяснил об этом, спасибо !!! – AlexGH