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
refmegkö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
outnem 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.