Junior — Middle
Дар интиқоли тағйирёбҳои истинодӣ дар методҳо, чӣ фарқиятҳо байни калимави калидии ref ва out мавҷуданд؟
sobes.tech AI
Ҷавоб аз AI
Дар C# калидвожаҳои ref ва out барои гузаронидани параметрҳо тавассути истинод истифода мешаванд, аммо онҳо фарқҳои муҳим доранд:
refталаб мекунад, ки тағирёбанда пеш аз гузаронидан ба метод оғоз ёфта бошад. Метод метавонад арзишро бихонад ва тағир диҳад.outталаб намекунад, ки тағирёбанда пешакӣ оғоз ёфта бошад, аммо метод бояд пеш аз баромадан арзишро ба он таъин кунад.
Масалан:
void ExampleRef(ref int x) {
x += 10; // метавонад бихонад ва тағир диҳад
}
void ExampleOut(out int y) {
y = 42; // ҳатмӣ таъин кардан
}
int a = 5;
ExampleRef(ref a); // a бояд оғоз ёфта бошад
int b; // оғоз нашудааст
ExampleOut(out b); // метод арзишро ба b таъин мекунад
Бинобар ин, ref вақте истифода мешавад, ки мехоҳед арзиши мавҷударо гузаронед ва тағир диҳед, ва out вақте, ки метод бояд чанд арзишро тавассути параметрҳо баргардонад.