Merhaba arkadaşlar, bu yazımda C# tip dönüşümleri (type casting) konusunu anlatacağım. Tip dönüşümü, bir değişkenin değerini başka bir tipe çevirme işlemidir. Örneğin, bir int değişkenini double tipine çevirmek veya bir string değişkenini char tipine çevirmek gibi.
Tip dönüşümleri iki şekilde yapılabilir: açık (explicit) ve kapalı (implicit). Açık tip dönüşümü, programcının kodda belirttiği bir dönüşüm işlemidir. Kapalı tip dönüşümü ise, derleyicinin otomatik olarak yaptığı bir dönüşüm işlemidir.
Açık Tip Dönüşümü (Explicit)
Açık tip dönüşümü yapmak için, dönüştürmek istediğimiz tipi parantez içinde yazarak değişkenin önüne koyarız. Örneğin:
int x = 10;
double y = (double)x; // x değişkeninin değeri double tipine dönüştürülerek y değişkenine atanır.
Kapalı Tip Dönüşümü (Implicit)
Kapalı tip dönüşümü yapmak için, herhangi bir ekstra kod yazmamıza gerek yoktur. Derleyici, uyumlu olan tipler arasında otomatik olarak dönüşüm yapar. Örneğin:
int x = 10;
double y = x; // x değişkeninin değeri double tipine dönüştürülerek y değişkenine atanır.
Burada açık tip dönüşümünün gereksiz olduğunu görüyoruz. Peki neden açık tip dönüşümüne ihtiyaç duyarız? Bunun sebebi, bazı durumlarda kapalı tip dönüşümünün mümkün olmaması veya veri kaybına yol açmasıdır. Örneğin:
double x = 10.5;
int y = x; // Bu satır hata verir. Çünkü double tipi int tipe otomatik olarak dönüştürülemez.
double x = 10.5;
int y = (int)x; // Bu satır çalışır. Ancak x değişkeninin ondalıklı kısmı kaybolur ve y değişkeninin değeri 10 olur.
string x = "Hello";
char y = x; // Bu satır hata verir. Çünkü string tipi char tipe otomatik olarak dönüştürülemez.
string x = "Hello";
char y = (char)x; // Bu satır da hata verir. Çünkü string tipi char tipe açık olarak da dönüştürülemez.
Gördüğümüz gibi, bazı tipler arasında açık veya kapalı tip dönüşümü yapmak mümkün değildir veya istenmeyen sonuçlara yol açabilir. Bu durumlarda, başka yöntemler kullanmamız gerekir. Örneğin, string tipini char tipe dönüştürmek için string’in ilk karakterini alabiliriz:
string x = "Hello";
char y = x[0]; // x string'inin ilk karakteri olan 'H' harfi y değişkenine atanır.
Ya da string tipini int tipe dönüştürmek için int.Parse() veya int.TryParse() metodlarını kullanabiliriz:
string x = "10";
int y = int.Parse(x); // x string'inin değeri int tipe dönüştürülerek y değişkenine atanır.
string x = "Hello";
int y;
bool z = int.TryParse(x, out y); // x string'inin değeri int tipe dönüştürülerek y değişkenine atanmaya çalışılır. Ancak bu mümkün olmadığı için z değişkeni false olur ve y değişkeni 0 olur.
Soru ve görüşlerinizi yorum kısmında paylaşabilirsiniz. Bir sonraki konuda görüşmek üzere.
C# ile ilgili diğer yazılarım için: C# – Bizneyapiyoruzki