C# Tip Dönüşümleri,Escape Squence Ve Çıkış Dizisi

Muhammet Ali
20 Mayıs 2015 Çarşamba
0

C# dilinde metinsel ifadelerden string veri tipini kullanırken, bazı belli başlı karakterleri kullanamayız. Bunun sebebi bu karakterleri C# dilinin de kullanıyor olmasıdır. Örneğin çift tırnak. Bununla birlikte bazen alt satıra geçmek de isteyebiliriz. İşte bu durumlarda string ifadeler içinde Escape Squence denen çıkış dizileri kullanmalıyız.

Karakter                                                          Açıklaması

 

\’                                                                     Tek tırnak

\”                                                                    Çift Tırnak

\\                                                                    Ters bölü

\0                                                                    Null

\a                                                                    Uyarı (Alert)

\b                                                                    Gerisilme (Backspace)

\f                                                                     Sayfa İleri (Form Feed)

\n                                                                    Satır Sonu (New Line)

\r                                                                     Satır Başı (Carrige Return)

\t                                                                     Yatay Sekme (Tab)

\v                                                                    Dikey Sekme (Verical Tab)

Örnek kullanımlar:

string text = “Bilgeadam \”bilgi\” teknolojileri.”; Bilgeadam “bilgi” teknolojileri.

string text = “Bilgeadam \nbilgi teknolojileri.”; Bilgeadam

bilgi teknolojileri.



string text = “Bilgeadam \tbilgi teknolojileri.”;

Bilgeadam                           bilgi teknolojileri.

 

Tip Dönüşümleri

Değişkenlerle çalışırken bir tipteki değeri, farklı bir tipteki değişkene atama ihtiyacı duyabilirsiniz. Bu işlem çok yaygın olarak kullanılır. .NET Framework iki tür tip dönüşümünü destekler, kapalı dönüşüm (implicit conversion) ve açık dönüşüm (explicit conversion). Kapalı dönüşümde, tip dönüşümü işlemi tamamen .NET Framework’e bırakılırken, açık dönüşümde net bir şekilde değerin hangi türe dönüştürüleceği belirtilir.


1           int Toplam;

2           byte adet = 5;

3           Toplam = adet;

Bu örnekte tip dönüşümü 3 nolu satırda gerçekleşiyor. Sağ taraftaki değişkenin değeri sol taraftaki değişkenin tipine yani int tipine çevriliyor ve Toplam adlı değişkene atanıyor. Tipler uyumlu olduğundan, yani int veri tipi, byte verit tipinin alabileceği değerleri desteklediğinden, sistem çevirme işlemini otomatik yapar. Buna kapalı dönüşüm (implicit conversion) denir.

 

1           int i;

2           double de = 10.56;

3           i = de;

 

Burada ise 3 nolu satırda hata oluşacaktır. Çünkü long veri tipi kendisinden daha küçük olan int veri tipine kapalı olarak çevrilemez. C#’ta tüm tipler birbiri ile uyumlu değildir. Bu tür durumlarda kapalı tip dönüşümü yapılamaz. Uyumsuz tipler arasında atama işlemi tip ataması (cast) ile yapılır. Buna da açık dönüşüm (explicit conversion) denir.  Bu da değeri çevrilecek değişkenin önüne parantez içerisinde tip yazılarak sağlanır. Örneğin, aşağıdaki örnekte, byte veri tipindeki adet değişkeninin değerinin, int veri tipine çevrilerek Toplam değişkenine atanacağı belirtilmiştir.

 

Toplam = (int) adet;

 

Byte tipindeki bir değişken değişkenin değeri ne olursa olsun, int’e çevirebilir ama tersi bir durum söz konusu olmadığından, yani int veri tipinin alabileceği tüm değerler byte veri tipine çevrilemeyeceğinden, çevrilecek tip mutlaka belirtilerek tip ataması yapmak gerekir.

1           byte yol;

2           byte zaman = 5;

3           byte hiz = 10;

4           yol = (byte)(zaman * hiz);

 

Örnekte tanımlanmış tüm değişkenler byte tipindedir ancak 4 nolu satırdaki tip ataması yapılmazsa uygulamamız derleme hatası verecek ve derlenmeyecektir. Hatanın sebebi, byte değişkenlerin çarpımının, int veri türünde sonuç vermesidir. Veri tiplerinde byte’ın alabildiği maksimum değeri hatırlayınız. Uygulama iki adet byte değişkenin olası en büyük değeri aldığını düşünüp çarpım sonucunun yine bir byte değişkende tutamayacağına karar vererek sonucu int tipinde döndürmektedir. Ancak bir çarpma işleminin sonucunun byte’ın sınırlarını geçmediğinden eminseniz ve ısrarla sonucu byte değişkende tutmak istiyorsanız, yukarıdaki gibi yol değişkenine atama işlemini gerçekleştirirken, tip atamasını da yapabilirsiniz.

Aşağıdaki tip dönüşüm tablosu, kapalı dönüşümü hangi veri tipleri için kullanabileceğinizi gösterir,

 

Tip                     Dönüşebileceği Tip

sbyte                  short, int, long, float, double, decimal

byte                    short, ushort, int, uint, long, ulong, float, double, decimal

short                   int, long, float, double, decimal

ushort                 int, uint, long, ulong, float, double, decimal

int                      long, float, double, decimal

uint                    long, ulong, float, double, decimal

long, ulong          float, double, decimal

float                   double

char                    ushort, int, uint, long, ulong, float, double, decimal

Açık ve kapalı tip dönüşümlerinin yanı sıra System.Convert sınıfı kullanılarak da tip dönüşümleri yapılabilir.

 

1 double sayi1 = Convert.ToDouble(txtSayi1.Text);

2  double sayi2 = Convert.ToDouble(txtSayi2.Text);

3  double carpim = sayi1 * sayi2;

4  txtSonuc.Text = Convert.ToString(carpim);

Örnekte txtSayi1, txtSayi2 ve txtSonuc üç TextBox’ı temsil etmektedir. TextBox’ın Text özelliği bilindiği üzere string veri tipinde değer taşır.Satır 1 ve 2’de txtSayi1 ve txtSayi2 adlı TextBox’lara girilen string değerler matematik işleminden geçirilmesi için Convert.To yöntemi ile double veri tipine dönüştürülür.Satır 3’te çarpım işlemi yapılarak, çıkan sonuç carpim adlı double veri tipine sahip bir değişkene atanır.Satır 4’te ise carpim değişkenin değeri, txtSonuc TextBox’ının Text özelliğine atanabilmesi için string tipine dönüştürülür.Satır 4’te kullanılan Convert.ToString() yerine tüm veri tiplerinin sahip olduğu ToString() metodu da kullanılabilir.

 

4  txtSonuc.Text = carpim.ToString();

Burada dikkat edilmesi gereken en önemli nokta, çevrilmek istenilen değerin çevrilecek tipe uyumlu olmasıdır. Aksi halde uygulamanız o noktada hata üretecektir. Örneğin:

 

double sayi = Convert.ToDouble(“yirmiiki”);

 

Görüldüğü üzere yirmiiki yazısı bir rakam değeri belirtmez. Türkçe olarak anlamlı gelse de bilgisayar için bir anlam taşımaz. Kod şu şekilde olursa, bir hata alınmaz:

 

double sayi = Convert.ToDouble(“22”);

 

Başka bir örnek olarak tarih dönüştürme verilebilir:

 

DateTime dogumTarih = Convert.ToDateTime(“6.5.1980”);

 

Hata vermezken,

 

DateTime dogumTarih = Convert.ToDateTime(“6.15.1980”);

enlightenedTarih formatı işletim sisteminin Bölgesel Ayarlarına (Regional and LanHata verecektir. “6.15.1980” tarihi ge-       guage Options) göre değişkenlik gösterebilir. Bu örnekte kullanılan bilçerli değildir çünkü 15.ay yoktur.             gisayarın Bölgesel Ayarların’ın Türkiye (Turkish) olduğu varsayılmıştır.

Aşağıdaki tablo, System.Convert sınıfı kullanılarak yapılabilecek tip dönüşümlerini kısaca özetlemektedir,

Tip Dönüşümü                      Açıklama

Convert.ToBoolean()               İlgili tipi, bool tipine çevirir.

Convert.ToByte()                    İlgili tipi, byte tipine çevirir.

Convert.ToChar()                    İlgili tipi, char tipine çevirir.

Convert.ToDateTime()             İlgili tipi, datetime tipine çevirir.

Convert.ToDecimal()               İlgili tipi, decimal tipine çevirir.

Convert.ToInt32()                    İlgili tipi, int tipine çevirir.

Convert.ToString()                  İlgili tipi, string tipine çevirir.



Yorum yaz