C# Console Değişken Tip Dönüşümü


Twitter'da Paylaş Favorilerime Ekle

DEĞİŞKEN TİP DÖNÜŞÜMÜ

Bir değişken tanımlandığında, bellekte ona ayrılan bölgenin türü de belirlenir. Bu nedenle o değişkene farklı türde değer atanması hataya neden olur.

Mesela kullanıcıdan bir sayı girmesini istedik ve girilen sayıyı int türündeki bir değişkene almak istiyoruz:

Console.Write("Sayı Giriniz: ");
int a = Console.ReadLine();

Yukarıdaki gibi bir kullanımda hata oluşacaktır. Çünkü console ekranına yazılan her şey string türünde kabul edilir. Bu değerleri sayısal türdeki bir değişkene direk atayamayız. Bu atamayı gerçekleştirebilmek için aşağıda bahsedilen dönüşüm yöntemlerinden birini kullanmamız gerekir.

Not: Console sınıfına ait Write ve WriteLine metotları, tüm türleri string'e çevirerek ekrana yazarlar. Bu metotlar ile ekrana sayısal değişkenleri yazdırırken ayrıca dönüşüm yapmamıza gerek kalmaz.

Farklı türdeki değişkenler arasında işlem yapacaksak, değişken dönüşüm işlemi yapmamız gerekir. 

Değişken dönüşümü işlemlerini ikiye ayırabiliriz: Açık ve kapalı dönüşüm.

1- Kapalı Dönüşüm:

Sayısal değişkenlerde her türün belli bir sınırı vardır. Sınırı daha büyük tipteki değişkenler, küçük olanların değerini alabilir. Burada dönüşüm işlemini program kendisi yapacaktır. Örneğin short türündeki bir değişkenin sakladığı değer, int  veya long tipindeki bir değişkene verilebilir. Çünkü int tipi daha büyük olduğundan, short tipindeki veriyi de saklayabilecektir.

Short x=100;

int y;

y = x;

Bu örnek sorunsuz çalışır çünkü x değişkeninin türü short, y değişkeninin türünden daha küçüktür.

Float a;

İnt b;

a=b;

Bu örnek de sorunsuz çalışır, çünkü float tipi int tipine göre daha büyük sayıları saklayabilecektir.

Ancak aşağıdaki gibi bir kullanım hataya neden olur. Çünkü short türündeki bir değişkene, int tipinde yani daha büyük bir değişkenin değeri verilmeye çalışılmıştır. Bu örnekte a değişkeninin değerinin (245) short türüne uygun olması sizi yanıltmasın. Önemli olan değişkenlerin türüdür ve short türündeki bir değişkene, int türündeki bir değişkenin değeri verilemez. 

Int a=245;

Short b;

b = a;

Aşağıdaki örnekte farklı tiplerde değişkenler tanımlanmış ve birbirlerine dönüştürülmek istenmiştir. Hangilerinin çalışıp, hangilerinin çalışmayacağı da belirtilmiştir.

byte a;

short b;

int c;

long d;

float x;

 

a=b; (Hata)

b=a; (Çalışır)

c=b; (Çalışır)

c=d; (Hata)

d=c(Çalışır)

d=x; (Hata)

x=d; (Çalışır)

2- Açık Dönüşüm:

Bu yöntemde dönüşüm işlemini bizim gerçekleştirmemiz gerekmektedir. Bunun için de yerine göre farklı yöntemler kullanılmaktadır.

a- Convert metodu:

Sayısal türler arasında dönüşüm yapabileceği gibi object türünü de farklı türlere çevirebilr. Dönüşüm yöntemleri arasında etkisi en geniş olandır diyebiliriz.

int a;

double b = 100.58;

a= Convert.toInt32( b );

Bu örnekte b değişkeninin değerini, integere çevrilerek a değişkenine aldık.
 

int sayi1;

sayi1 =Convert.toInt32(Console.ReadLine( ) );

Bu örnekte ise sayi1 değişkenine kullanıcının girdiği değer int'e çevrilerek atanmıştır.

b- Parse metodu:

String türündeki değerleri sayı türündeki değerlere çevirmekte kullanılır. Mesela konsola kullanıcının girdiği değeri sayısal bir değişkene alırken bu yöntemi kullanabiliriz.

int a;

a= int.Parse( Console.ReadLine( ) );

long b = long.Parse(Console.ReadLine( ) );

short c= short.Parse( Console.ReadLine( ) );

float sayi = float.Parse( Console.ReadLine( ) );

string x = "56";

int y = int.Parse( x );

Tüm sayı türleri için bu örnekler çoğaltılabilir.

c- toString() metodu:

Sayı ya da farklı tipteki değişkenleri, string tipine çevirebilen bir metottur. Bu yöntemle sadece string tipine dönüşüm yapılabilir.

int a = 506;

strint b = a.ToString();

a değişkenini string tipine çevirdik ve b değişkenine atadık.

Not: Console.Write ve Console.WriteLine metotları farklı türlerdeki verileri stringe çevirerek ekrana yazdırmaktadır. Bu metotları kullanırken ayrıca dönüşüm yapmaya gerek kalmaz.

d- Cast işlemi:

Bazı durumlarda bu yöntem kullanılabilmektedir. Örneğin object tipindeki değişken veya elemanları diğer tiplere çevirebilir. Aynı zamanda double tipini int tipine çevirebilir, yani sayılar arasında dönüşüm  yapabilir. Ama bir string tipini, int tipine ya da int tipini string tipine çeviremez.

Double sayi = 6.789;

int a;

a = (int)sayi;

Bu örnekte double tipindeki sayi değişkenini, int tipine çevirdik.

c# değişken türleri arasında işlemler, değişken dönüşümü, farklı türdeki değişken ve veriler ile işlemler, değişken tip dönüşümü nasıl yapılır, c# convert örnekleri, int.parse nedir