Top.Mail.Ru
Ответы
Аватар пользователя
6лет
Изменено
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+3

Зачем нужны в программировании C# ref и out? Не понимаю.

Вот они нужны для передачи по ссылке. out - для выходного значения. а ref - вроде для входного. Но все равно не понятно мне.

По дате
По рейтингу
Аватар пользователя
Новичок
6лет

Это модификаторы для параметров функций, они оба выходные. Разница в том, что для ref-параметра вы должны передать его инициализированным, и можете пользоваться его исходным значением. А для out-параметра вы не обязаны инициализировать его перед вызовом функции, но не можете использовать его значение в функции до присваивания, и обязаны инициализировать его в функции.

В целом они нужны что бы сохранять состояние переменной после выхода из стека.
Например, return может возвратить лишь одно значение. А что, если из метода требуется возвратить два или более фрагментов информации, например, целую и дробную части числового значения с плавающей точкой? Такой метод можно написать, используя модификатор out.

static void Swap(ref char a, ref char b)
{
char c;
c = a;
a = b;
b = c;
}

Меняет местами значения переменных "а" и "в"

Аватар пользователя
Мастер
6лет

Кратко о ref. Если ты хочешь передавать к примеру тип int по ссылке, то используешь модификатор ref. Он позволяет использовать именно ту переменную, которую ты указал, а не ее копию. Out нужен чтобы вернуть значение из метода в передаваемый параметр

Аватар пользователя
Искусственный Интеллект
6лет

В конечном итоге - чтобы вернуть значение из метода.
out вернет значение, а ref позволит передать значение и вернуть измененное.