Sobes.tech
Back to questions
Junior — Middle
65

Какие отличия существуют между ключевыми словами ref и out при передаче ссылочных переменных в методах?

Companies where asked
AstonAston

Answer from AI

sobes.tech AI

В C# ключевые слова ref и out используются для передачи параметров по ссылке, но имеют важные отличия:

  • ref требует, чтобы переменная была инициализирована до передачи в метод. Метод может читать и изменять значение.
  • out не требует предварительной инициализации переменной, но метод обязан присвоить ей значение до выхода.

Пример:

void ExampleRef(ref int x) {
    x += 10; // можно читать и изменять
}

void ExampleOut(out int y) {
    y = 42; // обязательно присвоить
}

int a = 5;
ExampleRef(ref a); // a должен быть инициализирован

int b; // не инициализирован
ExampleOut(out b); // метод присваивает значение b

Таким образом, ref используется, когда нужно передать и изменить уже существующее значение, а out — когда метод должен вернуть несколько значений через параметры.