#c_sharp
Скажите есть ли смысл передавать в метод аргументы ссылочного типа с модификатором ref (а также out) Ведь ссылочные типы передаются в качестве аргументов и так по ссылке?
Ответы
Ответ 1
Имеет, если вы хотите менять переданную ссылку (а не состояние объекта, на который она указывает) внутри метода.Ответ 2
К правильному ответу @Flammable добавлю: в .NET не происходит передача аргументов ссылочных типов по ссылке. Передача аргументов происходит по значению. Разница в том, что для аргументов с типами-значениями по значению передаётся сам объект, а для аргументов со ссылочного типа — ссылка на объект. Это не должно быть неожиданностью, так же ведут себя и переменные типов-значений и ссылочных типов. Теперь видно, что out и ref работают в обоих случаях одинаково: они гарантируют, что изменение в переданной переменной (сам объект для типа-значения и ссылка для ссылочных типов) будут видны вызывающей функции.
Комментариев нет:
Отправить комментарий