5 - C# Değişken tipleri arasında dönüşüm yapmak

MerryGo

Yeni üye
19 May 2021
48
15
Değişken tipleri arasında dönüşüm yapmak
csharp-1200x600.png


Kapalı(bilinçsiz) ve açık(bilinçli) dönüşüm tipleri

Kapalı dönüşüm (implicit conversion) veri tipleri arasında dönüşüm yaparken bunu otomatik olarak yapar. Bu tür dönüşümler düşük kapasiteli değişkenin daha yüksek kapasiteli değişkene atanması ile oluşur. Bunu tam tersi durum olan yüksek kapasiteli bir değişkeni düşük kapasiteli bir değişkene atamaya kalkarsak hata alırız.

Örnek:
C#:
string a = 3 + "";
int b = 2;
Console.WriteLine(a + b);
Console.ReadKey();
Çıktı: 32

Yukarıda a değişkenini string türünden tanımladık, burada 3 ün yanına + "" ekleyerek string olarak tanımlanmasını sağladık, aynı işlemi string a = "3" yaparak da gerçekleştirebiliriz. Daha sonra int türünden bir b değişkeni tanımladık ve bu iki değişkeni toplayarak ekrana yazdırdık. C# burada otomatik dönüşüm yaparak (a + b)'yi string türüne dönüştürdü ve ekrana 3 ve 2'yi bitişik yazarak 32 yazdırdı. Bu olay kapalı yani biliçsiz dönüşüme bir örnektir.

Örnek:
C#:
byte a = 3;
short b = 4;
short c = a + b;
Console.WriteLine(c);
Console.ReadKey();

Yukarıdaki programı çalıştırdığımız zaman hata verecektir çünkü 3. satırda a + b ile toplama yaptık, bu toplama işlemi otomatik olarak int türüne dönüştü ve int türündeki bir değeri daha düşük kapasitede olan short türündeki c değişkenine atamaya çalışarak hatalı bir işlem yaptık. Bu tür hatalar yapmamak için aşağıdaki tabloya göz atabilirsiniz. Bilinçsiz tür dönüşüm aşağıdaki tablodaki gibidir:
Ekran%2Bg%25C3%25B6r%25C3%25BCnt%25C3%25BCs%25C3%25BC%2B2021-08-04%2B055706.png



Açık(biliçli) dönüşümde (explicit conversion) ise değişkenler kullanıcı tarafından bazı metotlar yardımıyla dönüştürülür.
(hedef_tür)değişken_adı şeklinde kullanılır.

Ekran%2Bg%25C3%25B6r%25C3%25BCnt%25C3%25BCs%25C3%25BC%2B2021-08-04%2B060129.png


Açık dönüşümlerde büyük kapasiteli veri türünü daha düşük kapasiteli veri türüne dönüştürebiliriz.
Buna olaya casting denir. Açık dönüşüm yaparken veri kaybına uğrayabiliriz, buna dikkat etmeliyiz.

Örnek:
C#:
int a = 3;
double b = 2.2;
double c = (double)a + b;
Console.WriteLine(c);
Console.ReadKey();

Yardımcı sınıflar ile tür dönüşümleri
Parse metodu

String veri türündeki bir değeri başka bir veri türünü dönüştürmek için kullanılır. Parse metodu System sınıfına aittir. Parse metodunun yapısı aşağıdaki gibidir.
Kod:
 DeğişkenTürü.Parse(DönüştürülecekDeğer)

Örnek:
C#:
string s1 = "123";
string s2 = "342";
Console.WriteLine(Int32.Parse(s1).GetType());
Console.WriteLine(Int32.Parse(s2).GetType());

Çıktı :
System.Int32
System.Int32

TryParse Metodu

Parse metodu ile aynı çalışır tek farkı; değişken string türünden farklı ise, dönüşecek değerin sınırları altında veya üsütünde ise, null değerine sahip ise, herhangi bir hata oluşturacak bir durum var ise 0 değerini döndürür.

C#:
DeğişkenTürü.TryParse(Dönüştürülecek Değer, out DönüşecekDeğer)
veya
C#:
DeğişkenTürü.TryParse(Dönüştürülecek Değer, out değişkenTipi DönüşecekDeğer)

Şeklinde kullanılır. Dönüşüm sorunsuz gerçekleşti ise true bir hata meydana geldi ise false değerini döndürür ve program çalışmaya devam eder.

Örnek1 :
C#:
string s1 = "123";
int s3;
Console.WriteLine(Int32.TryParse(s1, out s3));
Console.WriteLine(s3);
Console.ReadKey();

Örnek2:
C#:
string s1 = "123";
Console.WriteLine(Int32.TryParse(s1, out int s3));
Console.WriteLine(s3);
Console.ReadKey();
Çıktı:
True
123

Convert metodu
Değişken tiplerini dönüştürmek için kullanılır ve sistem sınıfına aittir.

Ekran%2Bg%25C3%25B6r%25C3%25BCnt%25C3%25BCs%25C3%25BC%2B2021-08-04%2B060840.png


Örnek soru: Klavyeden girilen 3 sayının ortalmasını dönüşüm metotlarını kullanarak yazınız.

Kod:
C#:
int a, b, c;
Console.WriteLine("Üç sayı giriniz :");

a = Int32.Parse(Console.ReadLine());
b = Convert.ToInt32(Console.ReadLine());
c = Convert.ToInt32(Console.ReadLine());

double orta = Convert.ToDouble(a + b + c) / 3;

Console.WriteLine(orta);
Console.ReadKey();
Çıktı:
Üç sayı giriniz :
3
2
3
2,66666666666667

 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.