C# da qanday turdagi konvertatsiya turlari mavjud?
sobes.tech AI
AIdan javob
C# tilida asosiy ikkita turdagi konvertatsiya mavjud:
-
Aniq konvertatsiya (Explicit conversion):
(tur)operatoridan foydalanishni talab qiladi. Bu, kompilator avtomatik ravishda xavfsiz tarzda konvertatsiya qilolmaganda, masalan, asosiy sinfdan voris sinfga yoki yuqori aniqlikdagi turdan pastroq aniqlikdagi turga (masalan,doubledanint) o'tkazishda qo'llaniladi. Bu ma'lumotlarning yo'qolishi yoki ish vaqtida xatolik (InvalidCastException) bilan yakunlanishi mumkin.// double dan int ga aniq konvertatsiya double d = 123.45; int i = (int)d; // i 123 ga teng bo'ladi // Ob'ektni ma'lum bir turga konvertatsiya qilish object obj = "Hello"; string s = (string)obj; // s "Hello" ga teng bo'ladi -
Noma'lum konvertatsiya (Implicit conversion): Kompilator tomonidan avtomatik ravishda amalga oshiriladi, agar konvertatsiya ma'lum va xavfsiz bo'lsa, ya'ni ma'lumotlar yo'qotilmaydi. Masalan,
intdandoublega o'tkazish.// int dan double ga noma'lum konvertatsiya int x = 10; double y = x; // y 10.0 ga teng bo'ladi // Voris sinfni asosiy sinfga konvertatsiya qilish class Base {} class Derived : Base {} Derived derivedObj = new Derived(); Base baseObj = derivedObj; // Noma'lum konvertatsiya
Shuningdek, as va is operatorlari ham tur konvertatsiyasiga tegishli, lekin o'ziga xos xususiyatlarga ega:
-
asoperatori: Mümkin bo'lsa, turga konvertatsiya qiladi va muvaffaqiyatsiz bo'lsanullqaytaradi. InvalidCastException xatosini keltirib chiqarmaydi. Faqat referens turlar va Nullable turlar bilan ishlatiladi.// `as` operatoridan foydalanish object obj2 = "World"; string s2 = obj2 as string; // s2 "World" ga teng bo'ladi object obj3 = 123; string s3 = obj3 as string; // s3 null bo'ladi -
isoperatori: Ob'ekt ma'lum bir tur yoki undan voris bo'lgan tur ekanligini tekshiradi.trueyokifalseqaytaradi. C# ning so'nggi versiyalarida pattern matching bilan birga ishlatilishi mumkin, bu bilan tekshirish va konvertatsiya bir vaqtning o'zida amalga oshiriladi.// `is` operatoridan tur tekshirish uchun foydalanish object obj4 = "Example"; if (obj4 is string) { // Ob'ekt string bo'lsa, bajariladigan amallar } // Pattern matching bilan `is` ishlatish if (obj4 is string str) { // str bu yerda string sifatida mavjud }