Sobes.tech
Junior — Middle

Kokie yra skirtumai tarp raktinių žodžių ref ir out perduodant nuorodų kintamuosius metoduose?

sobes.tech AI

Atsakymas iš AI

C# kalboje, ref ir out raktiniai žodžiai naudojami parametrų perdavimui nuoroda, tačiau jie turi svarbių skirtumų:

  • ref reikalauja, kad kintamasis būtų inicializuotas prieš perduodant į metodą. Metodas gali skaityti ir keisti reikšmę.
  • out nereikalauja, kad kintamasis būtų iš anksto inicializuotas, tačiau metodas turi jam priskirti reikšmę prieš išeidamas.

Pavyzdys:

void ExampleRef(ref int x) {
    x += 10; // galima skaityti ir keisti
}

void ExampleOut(out int y) {
    y = 42; // privaloma priskirti
}

int a = 5;
ExampleRef(ref a); // a turi būti inicializuotas

int b; // neįvestas
ExampleOut(out b); // metodas priskiria reikšmę b

Taigi, ref naudojamas, kai reikia perduoti ir keisti jau esamą reikšmę, o out — kai metodas turi grąžinti kelias reikšmes per parametrus.