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