Страницы

Поиск по вопросам

вторник, 12 февраля 2019 г.

Что такое “псевдоним” для аргумента?

Читаю Джон Шарп - Microsoft Visual C#. Подробное руководство - 2017.
Разбираю тему с ref и out и там встречается такое примечание:

Уже второй, третий раз встречаю слово псевдоним.
Собственно вопрос: что такое псевдоним для аргумента в данном контексте или псевдоним в целом.


Ответ

Смотрите. «Обычные» параметры (без ref/out) передаются в метод по значению. Это значит, что если вы поменяете значение параметра внутри метода, то снаружи этого никто не заметит.
(Если вы поменяете не сам параметр ссылочного типа, а его поля/свойства, то это снаружи будет видно, но это уже другая история.)
Теперь, если у вас при параметре указан ref, то изменения этого параметра станут видны снаружи. То есть в коде
void Change(ref string s) { s = "Хихи"; }
string abc = "abc"; Change(ref abc);
будет изменена не копия ссылки abc на строку, а сама эта ссылка. Поэтому если вы теперь напишете
Console.WriteLine(abc);
— то выведено будет именно Хихи
Таким образом, имеется в виду, что s во время выполнения метода как бы просто другое имя (то есть, псевдоним) для имени abc

Комментариев нет:

Отправить комментарий