C# da ref, out va in tushunchalari



This content originally appeared on DEV Community and was authored by Elshod Ibodullayev

C# da ref, out va in tushunchalari

C# dasturlash tilida metodlarga parametr (argument) uzatishning turli usullari mavjud.
Ko‘p hollarda oddiy qiymat uzatiladi, lekin ba’zan bizga qiymatni havola (reference) orqali uzatish kerak bo‘ladi.

Shu yerda ref, out va in kalit so‘zlari yordamga keladi.
Keling, ularni sodda misollar bilan tushunib chiqamiz. 🚀

Oddiy uzatish (by value)

void ChangeValue(int x)
{
    x = 100;
}

int num = 5;
ChangeValue(num);
Console.WriteLine(num); // 5 chiqadi

👉 Oddiy holatda qiymat nusxasi metodga yuboriladi.
Shuning uchun tashqaridagi num o‘zgarmaydi.

ref kalit so‘zi

void ChangeValue(ref int x)
{
    x = 100;
}

int num = 5;
ChangeValue(ref num);
Console.WriteLine(num); // 100 chiqadi ✅

✅ ref orqali qiymat havola sifatida yuboriladi.

⚠ Lekin ref ishlatishdan oldin parametrga qiymat berilishi shart.

out kalit so‘zi

void GetValues(out int a, out int b)
{
    a = 10;
    b = 20;
}

int x, y;
GetValues(out x, out y);
Console.WriteLine($"{x}, {y}"); // 10, 20 chiqadi ✅

✅ out orqali ham qiymat havola orqali yuboriladi, lekin metod ichida qiymat berilishi majburiy.

Bu ko‘pincha bitta metoddan bir nechta qiymat qaytarish uchun ishlatiladi.

in kalit so‘zi

void PrintValue(in int x)
{
    // x = 50; ❌ Error – o‘zgartirib bo‘lmaydi
    Console.WriteLine(x);
}

int num = 30;
PrintValue(in num); // 30 chiqadi ✅

✅ in parametri havola orqali yuboriladi, lekin metod ichida o‘zgartirish mumkin emas.

Bu usul katta obyektlarni nusxa qilmasdan samarali uzatish uchun ishlatiladi.

Xulosa

  • ref → qiymatni havola orqali uzatadi, o‘zgartirish mumkin.
  • out → havola orqali uzatadi, lekin metod ichida qiymat berish majburiy.
  • in → havola orqali uzatadi, lekin metod ichida o‘zgartirish mumkin emas.


This content originally appeared on DEV Community and was authored by Elshod Ibodullayev