20
Şub
2017

C# Değişkenler ve Değişken Tanımlama

CSharp da değişkenler nedir ? Nasıl kullanılır ?

CSharp da değişkenler, bildiğimiz gibi başlangıç konularından biridir. Değişkenler, program yazarken değerleri (veya verileri) tutmakta kullanacağımız, değer tipleridir. Bu değerler bellekte, her bir tip için ayrı boyutta tutulmaktadır. Bu bellek alanları hakkında detaya girmeyeceğim, çünkü bu işin aslı donanım tarafıdır. Günümüzdeki donanım kalitesini düşününce (ram boyutları ve hızları) artık o kadarda önemli değildir. Tabi ki bu kafamıza göre gelişigüzel değişken kullanacağımız anlamına gelmemektedir.

Genelde bellek performansını, mobil cihazlar için yazılım geliştirirken dikkate almak mühimdir. Bununda nedeni mobil cihazların donanımının kısıtlı oluşudur.

CSharp da kullanılan başlıca tipler ve değerleri aşağıda hazırlamış olduğum tabloda paylaşıyorum. Bazı tiplerin aynı isimli olup başında “s” veya “u” olanları fark edeceksiniz. Burada s’nin anlamı signed, yani işaretli (-) anlamını taşımaktadır. Bir diğeri olan u ise unsigned‘dır ki tahmin edebileceğiniz üzere işaretsiz anlamına gelir.

 

Tipler Adı Boyut Min / Max
Referans Tipleri string Değişken Bütün unicode karekterleri
object Bütün veri tiplerinin türediği temel sınıf
Değer Tipleri sbyte 1 Byte -128 <–> 127
short 2 Byte -32.768 <–> 32.767
int 4 Byte -2.147.483.648 <–> 2.147.483.647
long 8 Byte -9.223.372.036.854.775.808 <–> 9.223.372.036.854.775.807
byte 1 Byte 0 <–> 255
ushort 2 Byte 0 <–> 65.535
uint 4 Byte 0 <–> 4.294.967.295
ulong 8 Byte 0 <–> 18.446.744.073.709.551.615
float 4 Byte + yada – 1,5*10-45
+ ya da – 3,4*1038
double 8 Byte + yada – 5*10-324
+ ya da – 1,7*10308
decimal 16 Byte + yada – 1,5*10-28
+ ya da – 7,9*1028
bool 1 Byte true ya da false
char 2 Byte Bütün Unicode karekterleri

 

Kısaca burada bahsettiğim tiplerden bazılarından bahsedecek olursak:
string: İçinde Unicodekarakterleri barındıran tiptir.
object: Buradaki listede yer alan tüm değişkenlerin türediği veri türüdür. Yani listeden seçtiğiniz herhangi bir tür direk olarak object türde bir değişkene atanabilir (boxing).
byte: 8 bitlik (1 byte) veri türüdür. Kullanacağımız değer 0 ile 255 arasında kalacak ise en uygun tiptir. Bu tip sadece pozitif değerleri destekler. Negatif değerleri de tutmasını isterseniz sbyte kullanmalısınız. Unutmayın ki bu sefer -128 ile +127 arasında değer saklayabilirsiniz.
int: -/+ Sayısal değerler için genellikle kullanılan tiptir.
bool: Genellikle evet/hayır tarzı dataları tutmakta kullanılır.

Şimdi sorabilirsiniz, neden bu kadar fazla tip var? Veri olarak ya metin ya da sayı saklarım, çarşaf kadar değişkene neden gerek var? Aslında asıl konu şimdi başlıyor diyebiliriz. Öncelikle CSharp’ da değişken nasıl tanımlanır ve nelere dikkat etmek gerekir görelim;
CSharp’da değişken tanımı:
Değişken_Tip_Adı Değişken_İsmi = Atanan_Değer;
şeklinde yapılır.Değişkenlere değer atarken ve değişkenlere isim verirken uymamız gereken kurallar var, bunlara gelin göz atalım.

1- Değişkenlere değer atamadan tanımlamak yasaktır.
2- Değişken isimlerinde büyük-küçük harf duyarlılığı vardır.
3- Değişken isimleri sayı ile başlayamaz.
4- Değişken isminde boşluk kullanılmaz.
5- Programlamada geçen anahtar kelimeler(for, for-each, console…..) kullanılamaz.
6- Türkçe karakterler (ğ, ü, ş, ç, ö, ı) kullanılamaz (Aslında zorunlu değildir).
7- Özel karakterler içeremez.
8- Değişken ismi 255 karakteri geçmemelidir.
9- Değişken isimleri küçük harf ile başlamalı, çift kelimeden oluşuyorsa ikinci kelimenin ilk harfi büyük olmalı. (degisken, degiskenKelime)

Örnek üzerinden gidelim. Bir üretici, günlük olarak ürettiği ürün adetini girdiği bir programcık yapalım. Ekranda bir TextBox ve Button ekliyoruz. Şimdi ekrandaki TxtQty TextBox’ına girdiğimiz sayıyı tutması için yukardaki tüm tiplere atayalım. Button’un OnClick özelliğine aşağıdaki kodları yazıp projemizi derliyoruz.
Default.aspx

<asp:TextBox ID="TxtQty" runat="server"></asp:TextBox>
<asp:Button ID="BtnAdd" runat="server" OnClick="BtnAdd_Click" />

Default.aspx.cs

protected void BtnAdd_Click(object sender, EventArgs e)
{
    string qtystring = TxtQty.Text;
    object qtyobject = TxtQty.Text;
    sbyte qtysbyte = Convert.ToSByte(TxtQty.Text);

    short qtyshort = 0;
    short.TryParse(TxtQty.Text, out qtyshort);

    int qtyInt = Convert.ToInt32(TxtQty.Text);
    long qtyLong = Convert.ToInt64(TxtQty.Text);
    byte qtyByte = Convert.ToByte(TxtQty.Text);

    ushort qtyUshort = 0;
    ushort.TryParse(TxtQty.Text, out qtyUshort);

    uint qtyUint = Convert.ToUInt32(TxtQty.Text);
    ulong qtyUlong = Convert.ToUInt64(TxtQty.Text);
    float qtyFloat = float.Parse(TxtQty.Text);
    double qtyDouble = Convert.ToDouble(TxtQty.Text);
    decimal qtyDecimal = Convert.ToDecimal(TxtQty.Text);
    bool qtyBool = Convert.ToBoolean(TxtQty.Text);
    char qtyChar = Convert.ToChar(TxtQty.Text);
}

Not: Eşitliğin sağ tarafında, tip dönüşümleri yapılmıştır. Dönüşüm yapılma sebebi, TextBox içine girilen değerler string yada tüm tiplerin ana sınıfı olan object tiptedir. Dikkat ederseniz string ve object değişken tanımlarında convert işlemi yapılmamıştır. Tip dönüşümlerini daha önceden biliyorsanız sorun yok fakat bilmiyorsanız tip dönüşümleri konusunda açıklıyor olacağım.

Gördüğünüz üzere program hata vermeden derlendi ama burada ki ana sorun derlenmesi değil doğru şekilde kullanılabilmesi. Burada dikkat etmemiz gereken, değişkende en az – en fazla tutacağımız değer aralığını doğru belirlemek. Üretici en iyi koşullarda 90 adet üretebildiğini var sayarsak, bizim değişkenimiz, min olarak 0 (negatif ürün üretilemez) adet ile max 90 adet arası bir değer tutuyor olacak. Tablomuza baktığımızda 0-100 arası en uygun tipi seçmeliyiz. Tabloya baktığınızda bunun byte değeri olduğunu görüyor olacaksınız.

protected void BtnAdd_Click(object sender, EventArgs e)
{
    byte qtyByte = Convert.ToByte(TxtQty.Text);
}

Şimdi aklınızda “kodun içinde bu sayıyı int de niye tutmadık niye illa byte ?” sorusu hala dönüyor olabilir. Değişken tanımlamak alışveriş sepeti seçmek gibi düşünün, sadece üç parça bir şey alacaksanız gidip alışveriş arabası almazsınız, el sepeti alırsınız veya tek kişi yaşıyorsun 250 metrekare 4+1 bir daire bakmazsın (paranız bolsa bilmem) veya 1kg kum için koca kamyon tutmayız. Değişken tanımlamak tam da bu örneklere benzer. Kısacası ihtiyacınıza en yakın değeri tutan değişkeni seçmelisiniz. Bu seçimler küçük gibi görünse de geliştirdiğiniz proje geliştikçe ciddi performans artışı sağlıyor olacak.

Share

You may also like...

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir