|
Kompyuter tizimlari kafedrasi
|
bet | 88/154 | Sana | 08.01.2024 | Hajmi | 5,29 Mb. | | #131939 |
Bog'liq Majmuapublic void Overload(int a)
{
Console.WriteLine("Bitta parametr: " + a);
}
/* Xato! Ikkita Overload(int) metodi e’lon qilishga ruxsat berilmaydi,
ular har xil turdagi qiymatlarni qaytarsa ham. */
public int Overload(int a)
{
Console.WriteLine("Bitta parametr: " + a);
return a * a;
}
Yuqoridagi kodga berilgan izohlardan ko‘rinib turibdiki, Overload() metodining ikkala ko‘rinishida qiymat qaytarish turlaridagi farqlar ushbu metodni qayta yuklash uchun yetarli emas. C# bir qator yashirin (ya’ni avtomatik) turdagi imkoniyatlarni taqdim etadi. Ushbu imkoniyatlar qayta yuklangan metodlarning parametrlariga ham tegishli. Misol tariqasida quyidagi dastur kodini ko‘rib chiqamiz.
using System;
class Overload2
{
public void MyMeth(int x)
{
Console.WriteLine("MyMeth(int) metodida:" + x);
}
public void MyMeth(double x)
{
Console.WriteLine("MyMeth(double) metodida: " + x);
}
}
class TypeConv
{
static void Main()
{
Overload2 ob = new Overload2();
int i = 10;
double d = 10.1;
byte b = 99;
short s = 10;
float f = 11.5F;
ob.MyMeth(i); // ob.MyMeth(int) metodini chaqirish
ob.MyMeth(d); // ob.MyMeth(double) metodini chaqirish
ob.MyMeth(b); // ob.MyMeth(int) metodini turini o‘zgartirib chaqirish
ob.MyMeth(s); // ob.MyMeth(int) metodini turini o‘zgartirib chaqirish
ob.MyMeth(f); // ob.MyMeth(int) metodini turini o‘zgartirib chaqirish
}
}
Dastur bajarilishi natijasida:
MyMeth(int) metodida: 10
MyMeth(double) metodida: 10,1
MyMeth(int) metodida: 99
MyMeth(int) metodida: 10
MyMeth(double) metodida: 11,5
Ushbu misolda MyMeth() metodining faqat ikkita varianti yozilgan: int turidagi parametr bilan va double turli parametr bilan. Biroq MyMeth() metodiga bayt, short yoki float qiymatini kiritish mumkin. Shunday qilib, agar bu metodga bayt yoki short turidagi qiymat uzatilsa, u holda C# kompilyatori bu qiymatni avtomatik ravishda int turiga o‘zgartiradi va natijada bu metodning MyMeth(int) varianti chaqiriladi. Agar unga float turidagi qiymat uzatilsa, u double turiga aylantiriladi va natijada bu usulning MyMeth(double) varianti chaqiriladi. Shu bilan birga yopiq turdagi konvertatsiyalar faqat parametr va argument turlari o‘rtasida aniq moslik bo‘lmasa amalga oshiriladi. Masalan, quyida bayt parametrini belgilaydigan MyMeth() metodining variantini qo‘shadigan oldingi dasturning biroz o‘zgartirilgan versiyasi keltirilgan.
|
| |