Sobes.tech
Junior

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:

  1. 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ən int-ə) ç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
    
  2. 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ən double-ə ç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, asis operatorları da mövcuddur, bunlar da tip çevirmə ilə əlaqəlidir, lakin özünəməxsus xüsusiyyətləri ilə:

  • as operatoru: Əgər mümkünsə, tip çevirməsini həyata keçirir və çevirmə mümkün deyilsə, null qaytarı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
    
  • is operatoru: Bir obyektin müəyyən bir tipin və ya ondan törəyən tipin nümunəsi olub olmadığını yoxlayır. true və ya false qaytarı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
    }