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