Junior — Middle
Aké sú rozdiely medzi kľúčovými slovami ref a out pri prenose referenčných premenných v metódach?
sobes.tech AI
Odpoveď od AI
V jazyku C# sa používajú kľúčové slová ref a out na odovzdanie parametrov odkazom, ale majú dôležité rozdiely:
refvyžaduje, aby bola premenná inicializovaná pred odovzdaním do metódy. Metóda môže čítať a meniť hodnotu.outnevyžaduje, aby bola premenná predtým inicializovaná, ale metóda jej musí priradiť hodnotu pred ukončením.
Príklad:
void ExampleRef(ref int x) {
x += 10; // možno čítať a meniť
}
void ExampleOut(out int y) {
y = 42; // povinné priradenie
}
int a = 5;
ExampleRef(ref a); // a musí byť inicializované
int b; // neinicializované
ExampleOut(out b); // metóda priradí hodnotu b
Takže, ref sa používa, keď je potrebné odovzdať a zmeniť existujúcu hodnotu, a out keď metóda má vrátiť viacero hodnôt cez parametre.