• Dastur bajarilishi natijasida
  • Kompyuter tizimlari kafedrasi




    Download 5,29 Mb.
    bet88/154
    Sana08.01.2024
    Hajmi5,29 Mb.
    #131939
    1   ...   84   85   86   87   88   89   90   91   ...   154
    Bog'liq
    Majmua

    public 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.

    Download 5,29 Mb.
    1   ...   84   85   86   87   88   89   90   91   ...   154




    Download 5,29 Mb.