Sobes.tech
Back to questions
Junior — Middle
66

Чем отличается использование ключевого слова ref от out в передаче аргументов в методах C#?

Companies where asked
pangames

Answer from AI

sobes.tech AI

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

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

Пример:

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

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

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

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

Итого:

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