Страницы

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

вторник, 28 января 2020 г.

Ref для ссылочных типов

#c_sharp


Скажите есть ли смысл передавать в метод аргументы ссылочного типа с модификатором
ref (а также out)
Ведь ссылочные типы передаются в качестве аргументов и так по ссылке?    


Ответы

Ответ 1



Имеет, если вы хотите менять переданную ссылку (а не состояние объекта, на который она указывает) внутри метода.

Ответ 2



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

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

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