Yazılım Bir Tutku

Tecrübe ilimden üstündür !

C# da Değişkenler

Tarih : 30.08.2010 04:54:33 Kategori : C# Hit : 5407

Merhaba arkadaşlar;

Makalelerimizi müfredat doğrultusunda sıralı olarak devam ettireceğimizi bir kez daha dile getirerek C# Introduction konuları ile makalelerimize devam ediyoruz.

Bu makalemizde ise yine gerek windows uygulamalarında gerekse web uygulamalarında her zaman ve en çok ihtiyaç duyacağımız konulardan birisi olan Değişkenleri incelemeye çalışacağız.

Peki nedir bu değişkenler ve ne işe yararlar ?
Projelerimizi geliştirirken birçok kez belirli verileri her ihtiyaç duyduğumuzda tekrar tekrar kullanmak üzre database haricinde biryerlerde saklıyor olma gereksinimini hissetmemiz kaçınılmazdır. Örnek verecek olursak bir web projesini düşünün ve bu projede kullanıcılar sitemize giriş yapacaklar ve biz sayfanın içerisinde o kullanıcıya ait mesajları, yazıları vs.. gibi bilgileri farklı farklı olarak gösteriyor olacağız. Kullanıcının adı için bir kez database ye bağlanıp adını çektikten sonra o kullanıcı adını database haricinde biryerler aklayabiliriz. Bu sayede kullanıcın adına her ihtiyaç duyduğumuzda tekrar tekrar database ye bağlanmak zahmetinden kurtulmuş oluruz ki bu performans açısındanda çok önemlidir veya bunun gibi birçok senaryoyuda canlandırabiliriz. İşte bu tarz durumlarda verilerin bellekte tutulması işlemini Değişkenler ile sağlamaktayız.

Bir değişkenin tanımlaması ve değişkene değer atanması ise oldukça basittir. Bir değişkeni tanımlamadan önce her değişkenin mutlaka bir tip inin olması gerektiğini belirtmekte fay var diye düşünüyorum. Burada tip den kastımız nedir peki ? Neticede saklanacak olan değer farklı türlerden olabilir. Örneğin biraz önceki örneğimizde belirttiğimiz gibi söylemsel değere sahip bir isim olabilir yada hesaplama yapacak olduğumuz matematiksel değere sahip bir değer olabilir. İşte tanımlayacak olduğumuz değişkenin ne tür bir değere sahip olduğunu değişkenn tip i ile belirtmekteyiz. Bu kısa bilgi sonrasında şimdi bir değişken tanımlaması gerçekleştirebiliriz.

SYNTAX ( Yazım cümleciği ) : Tip DeğişkenIsmi ;

Tabi değişkenleri tanımlarken belli başlı kurallarımızda yok değil.Dilerseniz bu kurallarada göz atalım.

Uyulması gereken kurallardan birisi değişkenler hiç bir şekilde nokta, soru işareti, noktalı virgül, boşluk,  ileride görecek olduğumuz aritmetik - karşılaştırma - atama  operatörleri, çift tırnak ve tek tırnak, parantezler kullanarak değişkenlerin isimleri tanımlanamaz,
Yine değişken isimlerimizi C# da kullandığımız if, for vs.. gibi anahtar kelimeler olamaz ve değişken isimlerimiz sayı ile başlayamaz
.  

Dilerseniz değişken tanımlamalarına birkaç örnek görelim.

Doğru tanımlanmış değişkenlere örnekler :
string isim ;
int sayi ;
string isim = " Mahmut TEMUR " ; (string türünden değişken tanımlamalarında değer çift tırnaklar içerisine yazılır.)
int sayi = 125;  ( int türünden değişken tanımlamalarında çift tırnak vs.. kullanılmaz.

Hatalı tanımlanmış değişkenlere örnekler : 

string isim = "Mahmut TEMUR"    (Burada değişken tanımlaması bittikten sonra noktalı virgül (;) konulmamış )
string for ( burada for anahtar kelimesi kullanılmış)
int 1sayi ; ( burada ise değişken ismi bir sayı ile başlamış ) 

Yukarıdaki anlatıma dikkat ederseniz değişkeni string isim; diyerek tanımlayabilmekteyiz. Tanımladığımız değişkene ise string isim = " Mahmut TEMUR "; diyerek bir değer atayabilmekteyiz. Değişkene değer atama işlemi değişkeni tanımladığımız anda olabildiği gibi daha sonraki bir süreçte de yapılabilmekte.

Örnek : 
string isim ;
isim = " Mahmut TEMUR "; diyerek öncesinde tanımladığımız isim adlı sting türünden değişkenimize Mahmut TEMUR değerini daha sonra bu değişkeni çağırarak atayabilmekteyiz. Daha ileriki bir süreçte ;
isim = " ASPNETTR " ; dediğimizde ise tanımladığımız sting türünden değişkenimize veriğimiz "Mahmut TEMUR" değeri kaybolarak yerine "ASPNETTR" değeri gelecektir. 

Buradaki makaleyi okuduysanız ki bu makale öncesinde onu mutlaka okumuş olmanız gerekmekte :) Orada herhangi bir olyın gerçekleşmesi için o olayın gerçekleşeceği kodları ilgili kontrolün süslü parantezleri içerisinde yazmamız gerektiğini belirtmiştik. Süslü parantezler ifadesini biraz daha gerçekçi tanımlamış olalım ve bundan sonraki süreçlerde süslü parantezleri scope olarak adlandıralım. Nasılki tüm eylemler  farklı kontrollerin scope lerinde tanımlanıyor ve gerçekleşiyor ise değişkenlerde tanımlandıkları scope ler ve tanımlandıkları scopelerin alt scopelerinde geçerlidir. Bunu ilk okul dönemlerinde öğrendiğimiz kümeler gibi düşünebiliriz. Bir üst kümede bulunan elemana  bir alt kümeden ulaşılabilir.

Yandaki şekle bakarak bu duruma dahada açıklık getirelim dilerseniz.

Örneğin a scope sinde tanımladığımız her hangi bir değişkene tanımlandığı a scopesi, b ve c scopelerindede ulaşabilmekteyiz. Fakat b csopesinden tanımladığımız herhangi bir değişkene sadece sadece bulunduğu b scopesi ve a scopesinden ulaşabilmekteyiz.

Peki burada şu soru gelebilir aklımıza çalıştığımız proje bir windows uygulaması olabilir o zaman formun her alanından ulaşabileceğimiz bir değişkene ihtiyaç duyarsak yada projemiz bir web projesi ise sayfanın her alanından ulaşabileceğimiz bir değişkene ihtiyaç duyarsak o zaman nasıl bir yol izlememiz gerekir ?

İşte tam bu noktada Global değişken olarak adlandırdığımız değişken imdadımıza yetişiyor. Peki nedir bu global değişken ve diğer tanımlanan değişkenlerden farkı nedir ?

Global değişkenin tanımı için; değişkenlerin genel tanımına bakarak sonuca gidebiliriz. Ne demiştik değişkenler için : "bulundukları scope ve alt scopelerde ulaşılabilmektedirler. Şimdi dilerseniz beraberce bir windows uygulamasında bir formun kod bölümüne veya bir web uygulamasında sayfamızın .cs uzantılı kısmına bakalım. Buralara baktığımız zaman gerek kontrollerin scope leri gerek form veya page lerimizin yüklenme anı scopeleri dışında bir scope nin daha var olduğunu görüryoruz. Tüm scopeleri kapsayan bir scope. Ben bir önceki makalede kullandığım form sayfasının kodları üzerinden örnek vereceğim.

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
       
       Bu kısımda değişkenimizi tanımlayabiliriz ...

        public Form1()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            //Butona tıklandığında gerçekleşmesini istediğimiz olayı gerçekleştirecek kodlarımızı bu alana yazıyoruz.
            MessageBox.Show("Sözleşmeyi kabul ediyormusunu ?", "Uyarı", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            listBox1.Items.Add("Mahmut TEMUR");
            listBox1.Items.Add("Daron YÖNDEM");
            listBox1.Items.Add("Burak Selim ŞENYURT");
            listBox1.Items.Add("Ömer SAĞLAM");
        }
    }
}


Burada kodlara baktığımız zaman public partial class Form1 : Form scopelerini görmekteyiz. Bu scope formun tamamını kapsayan bir scope. Mantık yürütecek olusak eğer biz burada bir değişken tanımlarsak "değişkenler bulundukları scopeler ve alt scopelerden erişilebilir" kuralı gereği formda veya page de bulunan tüm scopelerden erişilebilir. İşte formun veya page nin tüm scopelerinde erişimi olan bu tarz tanımlanmış değişkenler global değişken olarak adlandırılmaktadırlar. Tanımlama şekillerinde herhangi bir farklılık yoktur.

Bu makalemizde değişkenleri incelemeye çalıştık. Bir sonraki makalemizde ise değişkenleri tanımlarken değişkenlerimizin türlerini belirleyen "Tip" leri ele alıyor olacağız.

O zaman bir sonraki makalede görüşmek dileğiyle. Kalın sağlıcakla ...

Takip Ediyorum

Faydalı Projeler

Yorumlar

proje hazırlamm lazım formlarrda geçişte 1-2 sıkıntım var yapmak istediğim şey : form1de menüler butonu var o butona tıklandığı zaman form2 ye gidicek form 2 dede 8 tane menü butonu var mesela 1. menü mccikken menü gibi. isteğim şey form2 deki herhangi bir menü butonuna tıkladığımda form1 deki müsterinn menüsü olan texboxa otomatik adını yazdırması

Sizde Yorumda Bulunun

Konuya dair fikir ve sorularınızı paylaşın