
C#.NET’TE KULLANILAN DEĞİŞKEN TİPLERİ
C# dilinde üç çeşit standart değişken tipi vardır string-sayısal-mantıksal aslında nesneye dayalı programlama dil destekli programlarda her sınıftan değişken türetilebilir
Burada şöyle bir soru aklımıza gelebilir neden farklı tiplerde değişken seçenekleri vardır en büyük sayısal değere sahip bir değişken tipi ile bütün problemlerimizi çözebiliriz.Ancak performans ve teknik anlamda hiç de iyi bir fikir olmadığı ortaya çıkıyor.İlerdede göreceğiz değişken tipleri bir programın performansını etkileyen en önemli şeylerden biridir gereksiz bellek kullanımı programı yapması gerektiğinden fazla işi yapmaya zorlar ki bu hiç de iyi sonuçlar vermez işte bu nedenle hangi değişken tipini nerede nasıl kullanacağımızı çok iyi bilmemiz gerekiyor.Şimdi C# dilindeki değişken tiplerini tek tek inceleyelim.
a) Tam Sayı Tipleri:
Yalnızca sayısal ifadelerde kullanabileceğimiz ve aynı zamanda ondalıklı değerlere sahip olmayan değişkenler için kullanabileceğimiz değişken tipidir.
1>SByte:
Sadece “-128″ ile “+128″ arasındaki tam sayı değerlerini aktarabileceğimiz bir değişken tipidir.
private voidbutton1_Click(object sender,EventArgs e)
{
SByte sayi;
sayi=55;// Doğru kullanım
sayi=-55; // Doğru kullanım
sayi=900; // Hatalı kullanım
}
ve şu şekilde yapılan bir kodlamada hatalı olacaktır
private voidbutton1_Click(object sender,EventArgs e)
{
SByte sayi;
int sayi2=500;
sayi=sayi2; // Hatalı kullanım
}
peki bu hatadan kurtulma şansımı z yokmu yani int türünden bir değişkeni SByte türünden bir değişkene atayamazmıyız elbette atayabiliriz şimdide bununla ilgili bir örnek yapalım
private voidbutton1_Click(object sender,EventArgs e)
{
SByte sayi;
int sayi2=501;
sayi=(SByte)sayi2;
this.Text=sayi.ToString(); // -11 Yazar
}
2>Byte:
“0-255″ arası değer alabilen tam sayı tipidir.
private voidbutton1_Click(object sender,EventArgs e)
{
Byte sayi;
sayi=100;// Doğru kullanım
sayi=-100; // Hatalı kullanım
sayi=500; // Hatalı kullanım
int sayi2=100;
sayi=sayi2; //Hatalı kullanım
sayi=(Byte)sayi2;
}
Şimdi ise daha görmediğimiz değişken türleri ile birlikte güzel bir örnek yapalım
private voidbutton1_Click(object sender,EventArgs e)
{
Char ch;
Byte no;
String kelime=”İstanbul”;
ch=kelime[0];
no=(Byte)ch; // İ karakterinin Ascii değeri
}
3>Short:
“-32.768 ile +32.767″ Arası değer alabilen tamsayı tipidir.Bundan önceki değişkenlerle farkının bulunmadığını tek farkın aldığı değer aralığı olduğunu belirterek bununla ilgili örnek yapmıyacağız.
4>UShort:
“0-65.535″ Arası pozitif tamsayı değerleri alabilen tamsayı tipidir.
5>Int:
“-2.147.483.648 ile 2.147.483.647″ Arası değer alabilen tamsayı tipidir.
6>UInt:
“0 ile 4.294.967.295″ Arası değer alabilen pozitif tamsayı tipidir.
7>Long:
“-9.223.372.036.854.775.808 ile 9.223.372.036.854.775.807″ Arası değer alabilen tamsayı tipli değişken türüdür.
8>ULong:
“0 ile 18.446.744.073.709.551.615″ Arasında pozitif tam sayı değerleri alabilen değişken türüdür.
b)Ondalıklı Sayı Tipleri
Visual C# .NET içiresinde kullanılabilen üç çeşit ondalıklı sayı tipi değişken türü vardır.
1>Float:
“±1.5×10-45 ile ±3.4×1038″ Arası değer alabilen ondalıklı sayı tipidir.
Bununla ilgili karşımıza çıkan bir sonun çözümünü göreceğiz ilk önce sorunu görelim
private voidbutton1_Click(object sender,EventArgs e)
{
float sonuc;
int ilksayi=10,ikincisayi=3;
sonuc=ilksayi/ikincisayi;
this.Text=sonuc.ToString(); // 3 Yazar
}
Peki ya neden sonuç 3.3333… değilde 3 çıktı ? Cevabı işleme giren değişkenlerin tümünün türünün int olmasıdır yani ilksayi veya ikincisayi değişkenlerinden herhangi birinin türü float olsaydı sonuç doğru çıkacaktı.
private voidbutton1_Click(object sender,EventArgs e)
{
float sonuc,ilksayi=10;
int ikincisayi=3;
sonuc=ilksayi/ikincisayi;
this.Text=sonuc.ToString(); // 3.333333 Yazar
}
Şimdi bu sorunu farklı bir şekilde çözelim yine ilk önce sorunlu örneği görelim
private voidbutton1_Click(object sender,EventArgs e)
{
float sonuc;
sonuc=10/3;
this.Text=sonuc.ToString(); // 3 Yazar
}
Şimdide sorunun çözümünü görelim
private voidbutton1_Click(object sender,EventArgs e)
{
float sonuc;
sonuc=10f/3;
this.Text=sonuc.ToString(); // 3.333333 Yazar
}
Ya da
private voidbutton1_Click(object sender,EventArgs e)
{
float sonuc;
sonuc=(float)10/3;
this.Text=sonuc.ToString(); // 3.333333 Yazar
}
Bu son örnekte bu sorunun çözümü için kullanılabilecek farklı bir çeşittir.
2>Double:
“±5.0×10-324 ile ±1.7×10308″ Arası değer alabilen ondalıklı sayı tipidir.
Float’tan tek farkı boyutunun daha yüksek olmasıdır onun için yukardaki örnekleri double için tekrarlamayacağız ama siz dilerseniz bu örnekleri double için de uygulayabilirsiniz.
3>Decimal:
“±1.0x10e-28 ile ±7.9x10e28″ Arasında değer alabilen ondalıklı değişken tipidir.28 Dijite kadar hassasiyeti vardır.
private voidbutton1_Click(object sender,EventArgs e)
{
Decimal sayi;
sayi=10.25; //Hatalı kullanım
}
Eğer ondalıklı bir sayı ataması yapmak istiyorsak şu şekilde yapmalıyız.
private voidbutton1_Click(object sender,EventArgs e)
{
Decimal sayi;
sayi=10.25M; //Doğru kullanım
}
c) String Veri Tipleri:
Alfabetik değerleri barındırmak için kullanılabilecek değişken tipleri dört çeşittir string char bool ve boolean dilerseniz bunlardan ilki olan string değişken tipini inceleyelim.
1>String:
Metin içerikli verilerin aktarılabileceği değişken tipi olarak kullanılır.
private voidbutton1_Click(object sender,EventArgs e)
{
String isim;
isim=textBox1.Text;
MessageBox.Show(“Merhaba “+isim);
}
2>Char:
Karaktersel işlemler için kullanılan değişken tipidir.
private voidbutton1_Click(object sender,EventArgs e)
{
Char karakter;
karakter=”İstanbul”; // Hatalı kullanım
karakter=”İ”; // Hatalı kullanım
karakter=’İ’; // Doğru kullanım
}
Sayısal tipli değişkenlerde olduğu gibi string tipli değişkenlerde de atama yaparken sorunlar karşımıza çıkacaktır şimdi bu sorunları ve çözümlerini görelim.
private voidbutton1_Click(object sender,EventArgs e)
{
Char karakter;
String Metin=”H”;
karakter=Metin; // Hatalı kullanım
karakter=(Char)Metin; // Hatalı kullanım
karakter=Metin[0]; // Doğru kullanım
}
Char tipli değişkenleri yazdırırkende dikkat etmemiz gerek şeyler var char tipli değişkenler direkt yazdırılamaz önce string’e dönüştürülmeli dilerseniz şimdide bununla ilgili bir örnek yapalım.
private voidbutton1_Click(object sender,EventArgs e)
{
Char karakter;
String Metin=”H”;
karakter=Metin[0];
this.Text=Metin; // H Yazar
this.Text=karakter; // Hatalı kullanım
this.Text=karakter.ToString(); H Yazar
}
3>Bool:
Sadece true ve false değerleri alabilen veri tipleridir.İki alternatifli durumlarda kullanılırlar (evli-bekar gibi)
private voidbutton1_Click(object sender,EventArgs e)
{
bool durum;
durum=checkBox1.Checked;
if(durum==true)
{
this.Text=”Evli”;
}
else
{
this.Text=”Bekar”;
}
}
4>Boolean:
Bool tip değişken ile aynı işi yapmaktadır.
C#.NET İçerisinde Sabit Tanımlamak:
Matematikteki sabit sayılar gibi (“pi” veya “e”) değerleri uygulama içerisinde değişmeyen tipdeki değişkenlerimizi “const” bildirisiyle tanımlayabiliriz.Ancak dikkat edilmesi gereken bir husus var tanımlama sırasında değerinide atamak gereklidir.
private voidbutton1_Click(object sender,EventArgs e)
{
const Double sabitsayi=3.14;
sabitsayi=10; // Hatalı kullanım değer değiştirilemez
}
d) DateTime:
Tarih ve zaman içerikli değerlerin tutulacağı değişkenleri bu tip tanımlayabiliriz.
private voidbutton1_Click(object sender,EventArgs e)
{
DateTime tarih;
tarih=DateTime.Now; // Şu anki tarih
// veya
tarih=DateTime.Parse(textBox1.Text); // Textbox’taki yazılı olan tarih
}
e) Object:
İçerisine her türlü verinin aktarılabileceği sınıf türüdür.İçeriğin resim,metin,sayı vs. olması hiç farketmez.
private voidbutton1_Click(object sender,EventArgs e)
{
Object nesne;
nesne=textBox1.Text; // String’i object’e atıyoruz
this.Texe=nesne.ToString();
String deger=(String)nesne; // Object’i String’e atıyoruz
}