Middle
C# da referens turlar uchun ref va out kalit so'zlari nima uchun kiritildi?
sobes.tech AI
AIdan javob
Haqiqatan ham, referens turlari referens orqali o'tkaziladi (referensning nusxasi o'tkaziladi), ref yoki out foydalanish orqali ob'ektga bo'lgan referensiya o'zini referens orqali o'tkazish mumkin.
Bu quyidagi hollarda foydali bo'lishi mumkin:
- Ob'ekt nusxasini o'zgartirish: metod argument o'zgaruvchisining qaysi ob'ektga murojaat qilayotganini o'zgartirish imkonini beradi, unga yangi nusxa tayinlab.
TryParsemetodlarini amalga oshirish: metodboolqaytaradi, bu parsing muvaffaqiyatli bo'lganligini bildiradi, va natijaoutargumentiga yoziladi.outbo'lmasa, muvaffaqiyatsizlikda istisno chiqarish yoki tuple qaytarish kerak bo'ladi.- Samaradorlik (kamdan-kam, lekin bo'lishi mumkin): Ba'zi ekstremal hollarda, agar ob'ekt juda katta bo'lsa va uni tez-tez almashtirish kerak bo'lsa, referens orqali o'tkazish (
ref) yangi ob'ektni qaytarishdan (bu kamdan-kam bo'ladi) biroz samaraliroq bo'lishi mumkin.
ref yordamida ob'ektni almashtirish misoli:
public class MyClass
{
public int Value { get; set; }
}
public void ReplaceObject(ref MyClass obj)
{
obj = new MyClass { Value = 10 }; // ob'ekt referensiyasini o'zgartirish
}
// ... boshqa joyda
MyClass instance = new MyClass { Value = 5 };
ReplaceObject(ref instance);
// Endi instance yangi ob'ektga murojaat qiladi, Value = 10
out yordamida misol:
public bool TryParseInt(string s, out int result)
{
// Pars qilish logikasi
if (int.TryParse(s, out result))
{
return true;
}
result = 0; // Muvaffaqiyatsizlikda standart qiymat
return false;
}
// ... boshqa joyda
int parsedValue;
if (TryParseInt("123", out parsedValue))
{
// Muvaffaqiyatli pars
}