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:
-
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'danint'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 -
İ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'dendouble'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:
-
asoperatörü: Mümkünse tür dönüşümünü yapar ve dönüşüm başarısızsanulldö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 -
isoperatörü: Bir nesnenin belirli bir türe veya türe türetilmiş olup olmadığını kontrol eder.trueveyafalsedö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 }