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 когато методът трябва да върне множество стойности чрез параметри.