Kompyuter tizimlari kafedrasi




Download 5,29 Mb.
bet34/154
Sana08.01.2024
Hajmi5,29 Mb.
#131939
1   ...   30   31   32   33   34   35   36   37   ...   154
Bog'liq
Majmua

Oshkor tur almashtirish
Ayrim hollarda turlarni almashtirish oshkor tarzda amalga oshiriladi. Quyidagi oshkormas tur 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 turni char turiga - ma’lumot yo‘qotilishi mumkin

  • decimal ni boshqa ixtiyoriy sonli turga –ma’lumot yo‘qotilishi mumkin.

Bunday hollar uchun oshkor tur almashtirish qo‘llaniladi. Tipik sintaksisi quyidagicha:
qabul_qiluvchi =(qabul_qiluvchi_turi) ifoda;
long a; int b; a = 2300;
b = (int)a;
Biror tur 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, turlarni almashtirganda shu tur 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);
Turlarni 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("Turlarni almashtirganda xatolik yuz berdi");
}
Quyidagi misolda suzuvchi nuqtali sonni butun songa almashtirilgan:
double d=10.23; int i;
i = (int)(d + 2.4); //12
Keyingi misolda ishorasiz butun son char turiga o‘tkaziladi:
ushort c = 38; char sym = (char)c;
Console.WriteLine(sym);
Ekranga Unicode 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) C;
Console.WriteLine(d); // 105 qiymati qaytariladi
Agar hosil qilingan natija, yangi turga o‘tkazilmasa, tur almashtirish baribir amalga oshiriladi. Ammo natija kutilayotgan qiymatni qaytarmaydi. Masalan, int i = -1;
char symbol = (char) i; // ?
Ushbu tur almashtirish amalga oshirilmasligi lozim. Ammo natija sifatida ? simvoli qaytariladi.
Agar son turidagi qiymatni satr turga o‘tkazish lozim bo‘lsa, .NET kutubxonasi sinfining metodlaridan foydalanishi lozim. оbject sinfi ToString() metodiga ega bo‘lib, ushbu amalni bajarish mumkin: int i = 10; string C = i.ToString();
Shuningdek, satr turli qiymatni sonli turga o‘tkazish uchun Parse() metodidan foydalaniladi:
string C = 100; int i = int.Parse(s);
Console.WriteLine(i+50);
Convert sinfi bir turdan ikkinchi turga o‘tkazuvchi metodlardan tashkil topgan bo‘lib ulardan quyidagilarni keltiramiz:


Download 5,29 Mb.
1   ...   30   31   32   33   34   35   36   37   ...   154




Download 5,29 Mb.