Sobes.tech
Junior — Middle

Milyen különbségek vannak a ref és out kulcsszavak között referencia változók átadásakor módszerekben?

sobes.tech MI

Válasz az MI-től

C#-ban a ref és out kulcsszavakat paraméterek hivatkozáson keresztüli átadására használják, de fontos különbségek vannak közöttük:

  • A ref megköveteli, hogy a változó a metódus hívása előtt inicializálva legyen. A metódus olvashatja és módosíthatja az értéket.
  • Az out nem követeli, hogy a változó előzetesen inicializálva legyen, de a metódusnak értéket kell neki adnia a kilépés előtt.

Példa:

void ExampleRef(ref int x) {
    x += 10; // olvasható és módosítható
}

void ExampleOut(out int y) {
    y = 42; // kötelező értékadás
}

int a = 5;
ExampleRef(ref a); // az a inicializálva kell legyen

int b; // nincs inicializálva
ExampleOut(out b); // a metódus értéket ad b-nek

Így a ref akkor használatos, amikor meglévő értéket kell átadni és módosítani, az out pedig akkor, amikor a metódus több értéket kell, hogy visszaadjon paramétereken keresztül.