Sobes.tech
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 вақте, ки метод бояд чанд арзишро тавассути параметрҳо баргардонад.