Sobes.tech
Junior

C#'ta hangi tür dönüştürme türleri vardır?

sobes.tech yapay zeka

AI'dan gelen yanıt

C# dilinde iki temel tür dönüştürme türü vardır:

  1. Açık Dönüşüm (Explicit conversion): (tip) operatörünün kullanılması gerekir. Derleyicinin otomatik olarak güvenli bir şekilde dönüştüremediği durumlarda kullanılır, örneğin temel sınıftan türetilmiş sınıfa veya daha yüksek hassasiyetli bir tipten daha düşük hassasiyetli bir tipe dönüşümde (örneğin, double'dan int'e). Bu, veri kaybına veya çalışma zamanında hataya (InvalidCastException) yol açabilir.

    // double'dan int'e açık dönüşüm
    double d = 123.45;
    int i = (int)d; // i 123 olur
    
    // Nesneyi belirli bir türe dönüştürme
    object obj = "Hello";
    string s = (string)obj; // s "Hello" olur
    
  2. İmplicit Dönüşüm (Implicit conversion): Derleyici tarafından otomatik olarak gerçekleştirilir, dönüşüm biliniyor ve güvenliyse, yani veri kaybı yoksa. Örneğin, int'den double'a dönüşüm.

    // int'den double'a implicit dönüşüm
    int x = 10;
    double y = x; // y 10.0 olur
    
    // Türetilmiş sınıfın temel sınıfa dönüşümü
    class Base {}
    class Derived : Base {}
    
    Derived derivedObj = new Derived();
    Base baseObj = derivedObj; // implicit dönüşüm
    

Ayrıca, as ve is operatörleri de tür dönüşümleriyle ilgilidir, ancak özellikleriyle farklılık gösterir:

  • as operatörü: Mümkünse tür dönüşümünü yapar ve dönüşüm başarısızsa null döner. InvalidCastException hatası vermez. Sadece referans türleri ve Nullable türleriyle kullanılır.

    // `as` operatörünün kullanımı
    object obj2 = "World";
    string s2 = obj2 as string; // s2 "World" olur
    
    object obj3 = 123;
    string s3 = obj3 as string; // s3 null olur
    
  • is operatörü: Bir nesnenin belirli bir türe veya türe türetilmiş olup olmadığını kontrol eder. true veya false döner. C#'ın en yeni sürümlerinde, desen eşleştirme (pattern matching) ile birlikte kullanılarak hem kontrol hem de dönüşüm yapılabilir.

    // `is` operatörünün tür kontrolü için kullanımı
    object obj4 = "Example";
    if (obj4 is string)
    {
        // Nesne bir string ise yapılacak işlemler
    }
    
    // Pattern matching ile `is` kullanımı
    if (obj4 is string str)
    {
        // str burada bir string olarak kullanılabilir
    }