Kirish I bob. Nazariy qism
Download 48.08 Kb.
|
OPERATORLARNI QAYTA YUKLASH 2
Oshkor tip almashtirish
Ayrim hollarda tiplarni almashtirish oshkor tarzda amalga oshiriladi. Quyidagi oshkormas tip almashtirish hollarda xatolik yuzaga keladi: int ni short ga – ma’lumot yo‘qotilishi mumkin int ni uint ga – ma’lumot yo‘qotilishi mumkin uint ni int ga – ma’lumot yo‘qotilishi mumkin float ni int ga – ma’lumot yo‘qotilishi mumkin ixtiyoriy sonli tipni char tipiga - ma’lumot yo‘qotilishi mumkin decimal ni boshqa ixtiyoriy sonli tipga – o‘nli tip boshqacha tashkil qilinganligi bois, ma’lumot yo‘qotilishi mumkin. Bunday hollar uchun oshkor tip almashtirish qo‘llaniladi. Tipik sintaksisi quyidagicha: qabul_qiluvchi =(qabul_qiluvchi_tipi) ifoda; long a; int b;
a = 2300; b = (int)a; Biror tip boshqasiga o‘tkazilganda, kompilyator ushbu amalni bajarishi lozim. long a; int b; a = 2300000000; b = (int)a; Console.WriteLine(b); Mana shu dastur qismi bajarilganda ekranda -1994967296 soni hosil bo‘ladi. Demak bu yerdan ko‘rinib turibdiki tiplarni almashtirganda shu tip diapozoniga tushadigan qiymatlarni o‘tkazish zarur aks holda xatolik yuz beradi. C# tilida checked operatori mavjud bo‘lib, stekning holatini aniqlash mumkin ya’ni xatolik yuz bergani to‘g‘risida xabar beradi. long a; int b; a = 2300000; b = checked((int)a); Tiplarni almashtirish xatoliklarni hosil qilishi mumkinligini inobatga olib, xatoliklarni qayta ishlovchi try...catch konstruksiyasidan foydalanish ham mumkin. Masalan: long a; int b; a = 2300000000; try { b = checked((int)a); Console.WriteLine(b); }
catch { Console.WriteLine("Tiplarni almashtirganda xatolik yuz berdi"); } Quyidagi misolda suzuvchi nuqtali tipni butun son tipiga almashtirilyapti: double d=10.23; int i;
i = (int)(d + 2.4); Keyingi misolda ishorasiz butun son char tipiga o‘tkaziladi: ushort c = 38; char sym = (char)c; Console.WriteLine(sym); Ekranga ASCII kodining 38-kodli & simvoli chiqariladi. Quyidagi misolda decimal qiymat char ga o‘tkazilgan: decimal x = 105m; char sim = (char) x; Console.WriteLine(sim);// i harfi hosil bo‘ladi char C = 'i'; decimal d = (decimal) s; Console.WriteLine(d);// 105 qiymati qaytariladi Agar hosil qilingan natija, yangi tipga o‘tkazilmasa, tip almashtirish baribir amalga oshiriladi. Ammo natija kutilayotgan qiymatni qaytarmaydi. Masalan, int i = -1; char symbol = (char) i; Ushbu tip almashtirish amalga oshirilmasligi lozim. Ammo natija sifatida ? simvoli qaytariladi. Agar sonli tipli qiymatni harfiy tipga o‘tkazish lozim bo‘lsa, .NET bibliotekasi klasslari metodlaridan foydalanish lozim. оbject klassi ToString() metodiga ega bo‘lib, ushbu amalni bajarish mumkin: int i = 10; string C = i.ToString(); Shuningdek, harfiy tipli qiymatni sonli tipga o‘tkazish uchun Parse() metodidan foydalaniladi: string C = 100; int i = int.Parse(s); Console.WriteLine(i+50);
Download 48.08 Kb. Do'stlaringiz bilan baham: |
ma'muriyatiga murojaat qiling