C# Veri Tipi Dönüşümleri

C# programlama dilinde veri tipi dönüşümleri, bir değişkenin bir türden başka bir türe çevrilmesini ifade eder. Bu dönüşümler sayesinde farklı veri tipleri üzerinde işlem yapabilir ve veri uyumluluğunu sağlayabilirsiniz. C#’ta veri tipi dönüşümleri örtük (implicit) ve açık (explicit) olmak üzere iki ana başlıkta incelenir. Ayrıca, dönüşümler için Convert sınıfı ve Parse yöntemleri gibi yardımcı araçlar da bulunmaktadır.


1. Örtük Dönüşüm (Implicit Conversion)

Örtük dönüşüm, küçük bir veri tipinin daha büyük bir veri tipine otomatik olarak çevrilmesi işlemidir. Bu dönüşüm, veri kaybı ihtimali olmadığında yapılır.

Örnek:

int tamSayi = 100;
double ondalikSayi = tamSayi; // int -> double
Console.WriteLine(ondalikSayi); // Çıktı: 100

Not: Örtük dönüşüm, türler arasında veri kaybı veya hataya neden olabilecek durumlarda desteklenmez. Örneğin, double türünden int türüne dönüşüm otomatik yapılamaz.


2. Açık Dönüşüm (Explicit Conversion)

Açık dönüşüm, veri kaybı olasılığı olan veya uyumsuz türler arasında dönüşüm yapılması gerektiğinde kullanılan yöntemdir. Bu tür dönüşümler, programcı tarafından açıkça belirtilmelidir. Açık dönüşüm, tip dönüşüm operatörü (cast) ile gerçekleştirilir.

Örnek:

double ondalikSayi = 123.45;
int tamSayi = (int)ondalikSayi; // double -> int (Ondalık kısmı kaybolur)
Console.WriteLine(tamSayi); // Çıktı: 123

Dikkat: Açık dönüşümde veri kaybı olabilir. Örneğin, bir double değeri int türüne dönüştürüldüğünde ondalık kısım kaybolur.


3. Convert Sınıfı ile Dönüşüm

C#’ta System.Convert sınıfı, yaygın olarak kullanılan veri tipi dönüşümleri için kullanılır. Bu yöntem, farklı veri türleri arasında dönüşüm yapmayı kolaylaştırır.

Örnek:

string metin = "123";
int tamSayi = Convert.ToInt32(metin); // string -> int
Console.WriteLine(tamSayi); // Çıktı: 123

double ondalikSayi = 3.14;
string ondalikMetin = Convert.ToString(ondalikSayi); // double -> string
Console.WriteLine(ondalikMetin); // Çıktı: "3.14"

Avantaj: Convert sınıfı, hem sayısal hem de metinsel türler arasında dönüşüm yapabilir.


4. Parse ve TryParse Yöntemleri

Parse Yöntemi:

Parse, bir string değerini uygun bir veri türüne dönüştürmek için kullanılır. Ancak, dönüşüm başarısız olursa bir FormatException hatası oluşur.

string metin = "456";
int tamSayi = int.Parse(metin); // string -> int
Console.WriteLine(tamSayi); // Çıktı: 456

TryParse Yöntemi:

TryParse, dönüşümün başarısız olabileceği durumlar için daha güvenlidir. Hata durumunda false döner ve programın akışını bozmaz.

string metin = "123a";
bool basariliMi = int.TryParse(metin, out int tamSayi);

if (basariliMi)
    Console.WriteLine($"Dönüştürülen değer: {tamSayi}");
else
    Console.WriteLine("Dönüşüm başarısız!");

5. Kutulama (Boxing) ve Kutudan Çıkarma (Unboxing)

Kutulama (Boxing):

Bir değer tipinin referans tipine dönüştürülmesidir. Örneğin, int türü bir değerin object türüne atanmasıdır.

int tamSayi = 10;
object obj = tamSayi; // Boxing
Console.WriteLine(obj); // Çıktı: 10

Kutudan Çıkarma (Unboxing):

Referans tipine dönüştürülmüş bir değer tipinin tekrar eski haline getirilmesidir.

object obj = 10;
int tamSayi = (int)obj; // Unboxing
Console.WriteLine(tamSayi); // Çıktı: 10

Dikkat: Kutudan çıkarma işlemi sırasında tür uyumsuzluğu varsa InvalidCastException hatası oluşur.


6. Farklı Veri Türleri Arasında Dönüşüm Örnekleri

Metinsel Veri Dönüşümleri:

int sayi = 50;
string metin = sayi.ToString(); // int -> string
Console.WriteLine(metin); // Çıktı: "50"

string ondalik = "3.14";
float ondalikSayi = float.Parse(ondalik); // string -> float
Console.WriteLine(ondalikSayi); // Çıktı: 3.14

Ondalık ve Tam Sayılar Arasında Dönüşüm:

double ondalikSayi = 45.67;
int tamSayi = (int)ondalikSayi; // double -> int (Ondalık kısmı kaybolur)
Console.WriteLine(tamSayi); // Çıktı: 45

Bool Değerlerini Metne Dönüştürme:

bool durum = true;
string metin = durum.ToString(); // bool -> string
Console.WriteLine(metin); // Çıktı: "True"

7. Dönüşümlerde Hata Yönetimi

Dönüşüm sırasında hataları önlemek için aşağıdaki yöntemler kullanılabilir:

  • TryParse yöntemi kullanarak hataları önleyebilirsiniz.
  • try-catch blokları ile dönüşüm hatalarını yakalayabilirsiniz.
try
{
    string metin = "ABC";
    int sayi = int.Parse(metin); // Hata oluşur
}
catch (FormatException ex)
{
    Console.WriteLine($"Hata: {ex.Message}");
}

Sonuç

C#’ta veri tipi dönüşümleri, veri türleri arasındaki uyumluluğu sağlamak ve işlemleri doğru bir şekilde gerçekleştirmek için önemlidir. Örtük ve açık dönüşümlerin yanı sıra Convert, Parse ve TryParse gibi yöntemleri kullanarak güvenli ve esnek dönüşümler yapabilirsiniz. Bu konuyu iyi anlamak, programlarınızda oluşabilecek veri uyumsuzluklarını ve hataları önlemenize yardımcı olacaktır.

guest
0 Yorum
Eskiler
En Yeniler Beğenilenler
Inline Feedbacks
View all comments
0
YORUM YAPx