Я могу попросить здесь невозможное, но мне интересно, могу ли я каким-либо образом обновить переменную по ссылке.Как обновить переменную за ссылкой?
пример кода (C#) говорит больше, чем странное объяснение:
var actual = "world";
var reference = actual;
reference = "you";
Console.WriteLine("Hello {0}", actual);
Выходы "Hello world"
и не "Hello you"
.
https://dotnetfiddle.net/3yERkY
Строки ведут себя как тип значения в C#. Хотя C# 7, улучшенная поддержка ссылок, я не думаю, что можно иметь ссылку на локальную переменную. – Phil1970
@ Phil1970 Нет, они не струны действуют как рефренсы. Если вы делаете 'var actual = new Foo (1);', 'var reference = actual;', 'reference = new Foo (2);' вы не ожидаете, что 'actual' будет обновлен до' Foo (2) ' или. Вам просто нужно помнить, что выполнение «вы» за кулисами такое же, как «новая строка» («вызов». –
@ScottChamberlain. Поведение некоторых операций - это тип значения (например, оператор ==). См. Также [В C#, почему String является ссылочным типом, который ведет себя как тип значения?] (Http://stackoverflow.com/questions/636932/in-c-why-is-string-a-reference-type-that -behaves-like-a-value-type), поэтому они имеют значение semantic. Если вы сравниваете язык с C++, поведение будет более похоже на 'std :: string', чем на' std :: string & '. .. – Phil1970