Oydning asosiy tushunchalari


Deklaratsiya andozalari va shablonlari



Download 55,04 Kb.
bet5/6
Sana31.12.2021
Hajmi55,04 Kb.
#255219
1   2   3   4   5   6
Bog'liq
Dasturlash Jahongir

Deklaratsiya andozalari va shablonlari


Deklaratsiya naqshlari va tip shablonlari ma'lum bir ifoda turining ishlash vaqtida belgilangan turga mos kelishini tekshirish uchun ishlatiladi. Bundan tashqari, deklaratsiya shablonidan foydalangan holda yangi mahalliy o'zgaruvchini e'lon qilishingiz mumkin. Agar deklaratsiya naqshlari ushbu ifodaga to'g'ri keladigan bo'lsa, quyidagi misolda ko'rsatilgandek, o'zgartirilgan ifodaning natijasi ushbu o'zgaruvchiga beriladi:

C #Nusxalash



object greeting = "Hello, World!";

if (greeting is string message)

{

Console.WriteLine(message.ToLower()); // output: hello, world!

}

C # 7.0 dan boshlab , shablon reklama turi T, agar bu ifoda NULLdan boshqa qiymat bo'lsa va quyidagi shartlardan biri bo'lsa, ushbu holatdagi ifodaga mos keladi:



  • Ishlash vaqtidagi ifodaning natija turi T.

  • Davrida, bir so'z natijasi turi turi olingan Tbir interfeysi, ijro etadi, Tyoki boshqa bir bor so'zsiz mos yozuvlar aylantirish uchun undan T. Quyidagi misolda ushbu shart to'g'ri bo'lgan ikkita holat ko'rsatilgan:

C #Nusxalash

var numbers = new int[] { 10, 20, 30 };

Console.WriteLine(GetSourceLabel(numbers)); // output: 1
var letters = new List { 'a', 'b', 'c', 'd' };

Console.WriteLine(GetSourceLabel(letters)); // output: 2
static int GetSourceLabel(IEnumerable source) => source switch

{

Array array => 1,

ICollection collection => 2,

_ => 3,

};

Oldingi misolda, usul birinchi marta chaqirilganda, GetSourceLabelbirinchi naqsh argumentning qiymatiga mos keladi, chunki ish paytida ushbu argumentning ( int[]) turi Array turidan olingan . Uslubga ikkinchi chaqiruvda GetSourceLabelish vaqti argument turi ( Ro'yxat  ) Array dan olinmagan , lekin ICollection  interfeysini amalga oshiradi .



  • Ishlash vaqtidagi ifodaning natija turi null tip va asosiy tipdir T.

  • Bir bor, boks yoki o'ramdan ochis aylantirish bir turiga, ish vaqtida bir so'z natija turini T.

Quyidagi misol oxirgi ikkita shartni ko'rsatadi:

C #Nusxalash



int? xNullable = 7;

int y = 23;

object yBoxed = y;

if (xNullable is int a && yBoxed is int b)

{

Console.WriteLine(a + b); // output: 30

}

Agar siz faqat ifoda turini tekshirmoqchi bo'lsangiz _, quyidagi misolda ko'rsatilgandek, o'zgaruvchining nomi o'rniga bo'sh o'zgaruvchini ishlatishingiz mumkin :


Ba'zan, dasturni bajarishda, oldindan ko'rish yoki ko'rish qiyin bo'lgan xatolar yuzaga keladi, ba'zan esa ularni umuman imkonsiz qilib qo'yadi. Masalan, faylni tarmoq orqali uzatishda tarmoq ulanishi to'satdan tushib ketishi mumkin. bunday holatlar istisno deb ataladi . C # tili ishlab chiquvchilarga ushbu vaziyatlarni boshqarish qobiliyatini beradi. Buni sinab ko'ring ... ushlang ... nihoyat qurish C # uchun mo'ljallangan .

bitta

2018-04-02 121 2

3

to'rt


besh

6

7



sakkiz

to'qqiz


10

o'n bir


12

try

{

     



}

catch


{

     


}

finally


{

     


}

A foydalanganda harakat ... catch..finally blok , barcha so'zlar sinash blokda birinchi ijro etiladi . Agar ushbu blokda istisnolar qo'yilmagan bo'lsa, u bajarilgandan so'ng nihoyat blok bajarilishini boshlaydi . Va keyin..soz..topincha qurish o'z ishini yakunlaydi.

Agar urinish blokiga istisno tashlansa, u holda normal ijro to'xtaydi va CLR istisno bilan ishlay oladigan tutash blokni qidirishni boshlaydi . Agar kerakli catch bloki topilsa, u bajariladi va tugagandan so'ng nihoyat blok bajariladi.

Agar kerakli tutish bloki topilmasa, istisno yuzaga kelganda, dastur buziladi.

Quyidagi misolni ko'rib chiqing:



bitta

2018-04-02 121 2

3

to'rt


besh

6

7



sakkiz

to'qqiz


10

o'n bir


class Program

{

    static void Main(string[] args)



    {

        int x = 5;

        int y = x / 0;

        Console.WriteLine($"Результат: {y}");

        Console.WriteLine("Конец программы");

        Console.Read();

    }

}


Bunday holda, raqam 0 ga bo'linadi, buning natijasida istisno tashlanadi. Ilovani disk raskadrovka rejimida ishga tushirishda biz Visual Studio-da istisno haqida ma'lumot beradigan oynani ko'ramiz:

Ushbu oynada System.DivideByZeroException turidagi istisno, ya'ni nolga bo'linishga urinish tashlanganini ko'ramiz . Tafsilotlarni ko'rish elementidan foydalanib, istisno haqida batafsil ma'lumotni ko'rishingiz mumkin.

Va bu holda biz uchun faqat dasturning bajarilishini yakunlash qoladi.

Bunday g'ayritabiiy dasturni bekor qilinishiga yo'l qo'ymaslik uchun siz try ... catch ... ni ishlatishingiz kerak . Keling, misolni quyidagicha yozamiz:



bitta

2018-04-02 121 2

3

to'rt


besh

6

7



sakkiz

to'qqiz


10

o'n bir


12

13

o'n to'rt



o'n besh

o'n olti


17

o'n sakkiz

o'n to'qqiz

yigirma


21

22


class Program

{

    static void Main(string[] args)



    {

        try

        {

            int x = 5;

            int y = x / 0;

            Console.WriteLine($"Результат: {y}");

        }

        catch

        {

            Console.WriteLine("Возникло исключение!");

        }

        finally

        {

            Console.WriteLine("Блок finally");

        }

        Console.WriteLine("Конец программы");

        Console.Read();

    }


}

Bunday holda, biz yana blokda istisnoga ega bo'lamiz, chunki biz nolga bo'lishga harakat qilmoqdamiz. Va chiziqqa etib borish

bitta

int y = x / 0;

dastur ishlamay qoladi. CLR ovlash blokini topadi va boshqaruvni ushbu blokga o'tkazadi.

Catch blokidan so'ng, nihoyat blok bajariladi.

Istisno chiqarildi!

Nihoyat blokirovka qiling

Dasturning oxiri

Shunday qilib, dastur hali ham bo'linishni nolga tenglashtirmaydi va shunga ko'ra, ushbu bo'linish natijasini ko'rsatmaydi, ammo endi u ishdan chiqmaydi va istisno blok blokida ko'rib chiqiladi.

Shuni ta'kidlash kerakki, ushbu qurilishda sinash bloki talab qilinadi . Tugatish bloki bilan biz oxirgi blokni qoldirib yuborishimiz mumkin:

bitta

2018-04-02 121 2

3

to'rt


besh

6

7



sakkiz

to'qqiz


10

try

{

    int x = 5;



    int y = x / 0;

    Console.WriteLine($"Результат: {y}");

}

catch


{

    Console.WriteLine("Возникло исключение!");

}


Aksincha, nihoyat blok bilan, biz blok blokni qoldirib, istisno qilolmaymiz:

bitta

2018-04-02 121 2

3

to'rt


besh

6

7



sakkiz

to'qqiz


10

try

{

    int x = 5;



    int y = x / 0;

    Console.WriteLine($"Результат: {y}");

}

finally


{

    Console.WriteLine("Блок finally");

}


Biroq, C # sintaksisining nuqtai nazari bo'yicha, bu qurilish juda to'g'ri, ammo shunga qaramay, CLR kerakli ushlash blokini topa olmaydi, istisno ko'rib chiqilmaydi va dastur ishdan chiqadi.


Download 55,04 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish