C#-də hansı növ çevirmə növləri mövcuddur?
sobes.tech Süni İntellekt
AI-dan cavab
C# dilində iki əsas növ tip çevirmə mövcuddur:
-
Aydın çevirmə (Explicit conversion):
(tip)operatorundan istifadə etməyi tələb edir. Bu, kompilyatorun avtomatik olaraq təhlükəsiz şəkildə çevirməyi mümkün olmadığı hallarda, məsələn, əsas sinifdən törəmə sinfə və ya daha yüksək dəqiqlikli tiplərdən daha aşağı dəqiqlikli tiplərə (məsələn,double-dənint-ə) çevirmə zamanı istifadə olunur. Bu, məlumat itkisinə və ya icra zamanı səhvlərə (InvalidCastException) səbəb ola bilər.// double-dən int-ə aydın çevirmə double d = 123.45; int i = (int)d; // i 123 olacaq // Obyekti müəyyən bir tipe çevirmək object obj = "Hello"; string s = (string)obj; // s "Hello" olacaq -
Qeyri-əlaqəli çevirmə (Implicit conversion): Avtomatik olaraq, çevirmənin məlum və təhlükəsiz olduğu zaman, yəni məlumat itkisi olmadan həyata keçirilir. Məsələn,
int-dəndouble-ə çevirmə.// int-dən double-ə qeyri-əlaqəli çevirmə int x = 10; double y = x; // y 10.0 olacaq // Törəmə sinfi əsas sinfə çevirmək class Base {} class Derived : Base {} Derived derivedObj = new Derived(); Base baseObj = derivedObj; // Qeyri-əlaqəli çevirmə
Bundan başqa, as və is operatorları da mövcuddur, bunlar da tip çevirmə ilə əlaqəlidir, lakin özünəməxsus xüsusiyyətləri ilə:
-
asoperatoru: Əgər mümkünsə, tip çevirməsini həyata keçirir və çevirmə mümkün deyilsə,nullqaytarır. InvalidCastException istisnasını atmaz. Yalnız referans tiplər və Nullable tiplərlə istifadə olunur.// `as` operatorunun istifadəsi object obj2 = "World"; string s2 = obj2 as string; // s2 "World" olacaq object obj3 = 123; string s3 = obj3 as string; // s3 null olacaq -
isoperatoru: Bir obyektin müəyyən bir tipin və ya ondan törəyən tipin nümunəsi olub olmadığını yoxlayır.truevə yafalseqaytarır. C#-ın ən son versiyalarında, pattern matching ilə birlikdə istifadə edilə bilər, bu da yoxlama və çevirməni eyni zamanda həyata keçirir.// `is` operatorundan tip yoxlaması üçün istifadə object obj4 = "Example"; if (obj4 is string) { // Əgər obyekt stringdirsə, əməliyyatlar } // Pattern matching ilə `is` istifadə if (obj4 is string str) { // str burada string kimi mövcuddur }