• Что бы вступить в ряды "Принятый кодер" Вам нужно:
    Написать 10 полезных сообщений или тем и Получить 10 симпатий.
    Для того кто не хочет терять время,может пожертвовать средства для поддержки сервеса, и вступить в ряды VIP на месяц, дополнительная информация в лс.

  • Пользаватели которые будут спамить, уходят в бан без предупреждения. Спам сообщения определяется администрацией и модератором.

  • Гость, Что бы Вы хотели увидеть на нашем Форуме? Изложить свои идеи и пожелания по улучшению форума Вы можете поделиться с нами здесь. ----> Перейдите сюда
  • Все пользователи не прошедшие проверку электронной почты будут заблокированы. Все вопросы с разблокировкой обращайтесь по адресу электронной почте : info@guardianelinks.com . Не пришло сообщение о проверке или о сбросе также сообщите нам.

ref va out kalit so‘zlari C# tilida – Farqi nimada?

Lomanu4 Оффлайн

Lomanu4

Команда форума
Администратор
Регистрация
1 Мар 2015
Сообщения
1,481
Баллы
155
Agar siz C# dasturlash tilida ishlayotgan bo‘lsangiz, ref va out kalit so‘zlariga duch kelgan bo‘lishingiz mumkin. Ular ikkalasi ham o‘zgaruvchini qiymat emas, balki havola (reference) orqali uzatish uchun ishlatiladi. Ammo ularning orasida jiddiy farqlar bor, va bu farqlarni tushunish dasturchi sifatida siz uchun muhim.

Ushbu maqolada siz quyidagilarni bilib olasiz:
ref nima?
out nima?
• Ikkalasining farqi
• Qachon va qaysi birini ishlatish kerak?
• Bonus: Tuple orqali alternativ yechim

1. ref nima?
ref yordamida o‘zgaruvchini metodga havola orqali uzatamiz, ya’ni metod ichida qiymatini o‘zgartirsak, u tashqarida ham o‘zgaradi. Muhim shart — bu o‘zgaruvchi avvaldan qiymatga ega bo‘lishi kerak.

✅ Misol:


void DoubleValue(ref int number)
{
number *= 2;
}

int x = 10;
DoubleValue(ref x);
Console.WriteLine(x); // Output: 20

Bu yerda a ning qiymati metod ichida o‘zgartirildi va natijada u 20 ga teng bo‘ldi.

2. out nima?
out ham ref kabi havola orqali uzatiladi, lekin bu o‘zgaruvchi oldindan qiymatga ega bo‘lishi shart emas. Biroq, metod ichida unga albatta qiymat berilishi kerak.

✅ Misol:


void GetUser(out string name, out int age)
{
name = "Kamoliddin";
age = 23;
}

string userName;
int userAge;

GetUser(out userName, out userAge);
Console.WriteLine($"{userName}, {userAge}"); // Output: Kamoliddin, 23

Bu usul ko‘pincha bir nechta qiymatni metoddan qaytarish kerak bo‘lganda ishlatiladi.

Qachon qaysi birini ishlatish kerak?

• Agar siz o‘zgaruvchini metod ichida o‘zgartirib, natijasini tashqarida ishlatmoqchi bo‘lsangiz — ref.

• Agar siz metod orqali bir nechta qiymat qaytarmoqchi bo‘lsangiz — out.

• Ammo jamoaviy loyihalarda haddan tashqari ko‘p ref/out ishlatish kutilmagan muammolarga olib kelishi mumkin. Zamonaviy alternativlardan foydalanish tavsiya etiladi.

3. Bonus: Tuple yordamida toza alternativ


(string name, int age) GetUser()
{
return ("Kamoliddin", 23);
}

var result = GetUser();
Console.WriteLine($"{result.name}, {result.age}");

Bu usul ko‘proq zamonaviy va o‘qilishi oson hisoblanadi.

Xulosa
ref
va out kalit so‘zlari sizga C# tilida kuchliroq metodlar yozishga imkon beradi. Ular yordamida siz metod orqali bir nechta qiymat uzatishingiz yoki mavjud qiymatlarni o‘zgartirishingiz mumkin. Lekin, zamonaviy C# versiyalarida tuple yoki class/struct orqali natijalarni uzatish tozaroq va xavfsizroq yondashuv hisoblanadi.


Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.

 
Вверх Снизу