using System;
class RefTest {
// Ushbu metod argumentini o'zgartiradi.
//Ref modifikatorining qo'llanilishi va joylashishiga alohida e'tibor bering
public void Sqr(ref int i) {
i = i * i;
}
}
class RefDemo {
static void Main() {
RefTest ob = new RefTest ();
int a = 10;
Console.WriteLine("а до вызова: " + a);
ob.Sqr(ref a); // ref modifikatoridan foydalanishga e'tibor bering
Console.WriteLine("а после вызова: " + а);
}
}
Ko'rib turganingizdek, ref modifikatori metod e`lon qilinganda parameter oldidan va metod chaqirilganda argumentdan oldin ko'rsatiladi. Quyida ushbu dasturni amalga oshirish natijasi berilgan, u Sqr() metodi yordamida argument qiymati o`zgartirilganini tasdiqlaydi.
а до вызова: 10
а после вызова: 100
Endi, ref modifikatoridan foydalanib, oddiy tipdagi ikkita argumentning qiymatlarini almashtirish metodining yozishini ko`raylik. Misol sifatida, quyidagi dasturda, Swap() metodining ikkita butun argumentlarining qiymatlarini qayta tashkil qilish amalga oshiriladi.
// Ikkita qiymatni almashtirish.
using System;
class ValueSwap {
// Bu metod o'z argumentlarini o'zgartiradi.
public void Swap(ref int a, ref int b) {
int t;
t = a;
a = b;
b = t;
}
}
class ValueSwapDemo {
static void Main() {
ValueSwap ob = new ValueSwap();
int x = 10, у = 20;
Console.WriteLine("х и у до вызова: " + х + " " + у);
ob.Swap(ref x, ref у);
Console.WriteLine("х и у после вызова: " + х + " " + у);
}
}
Bu dasturning bajarilgandan keying natijasi.
х и у до вызова: 10 20
х и у после вызова: 20 10
Ref modifikatoriga nisbatan quyidagilarni yodda tutish kerak. Ushbu modifikator yordamida havola orqali uzatiladigan argumentga metod chaqirilishidan oldin qiymat berilishi kerak. Aslida, bunday argumentni parametr sifatida qabul qiladigan metodda parametr haqiqiy qiymatga ishora qiladi deb taxmin qilinadi. Shuning uchun, ref modifikatorini ishlatiladigan metodda hech qachon argumentga boshlang`ich qiymat berilmaydi.
Do'stlaringiz bilan baham: |