Выбор ответа Junior Типы значений и ссылочные спрашивают часто обновлено

Разница ref, out и in

Вопрос

Какое утверждение о модификаторах параметров верно?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: out обязан присвоить значение, ref требует инициализации до вызова. ref передаёт ссылку на переменную, и компилятор требует её инициализацию до вызова. out тоже передаёт ссылку, но метод обязан присвоить значение, а инициализация до вызова не нужна. in передаёт ссылку только для чтения (полезно для больших…

Варианты ответа

  1. out обязан присвоить значение, ref требует инициализации до вызоваправильный ответ
  2. in передаёт копию, а ref передаёт ссылку только для классов
  3. out можно использовать только с типами значений, но не с классами
  4. ref и out полностью взаимозаменяемы, разница лишь в стиле кода

Разбор

ref передаёт ссылку на переменную, и компилятор требует её инициализацию до вызова. out тоже передаёт ссылку, но метод обязан присвоить значение, а инициализация до вызова не нужна. in передаёт ссылку только для чтения (полезно для больших структур без копирования). Все три работают с любыми типами, в том числе со ссылочными: тогда метод может заменить саму ссылку у вызывающего.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме