C# Değişkenlerin Faaliyet Alanı
C# dilinde programlar açılan ve kapanan parantezler içerisinde yazılır. Bu açılan ve kapanan parantezler arasındaki bölgeye blok denir. Tanımlanan bir değişkene, ancak tanımlandığı blok içerisinde ulaşılabilir. Bu blok aralığına değişkenin faaliyet alanı denir. O/'ta faaliyet alanı aşağıdaki kriterlere göre belirlenir.
1. Bir sınılın üye elemanı olarak tanımlanmış değişken her zaman sınılın faaliyet alanı içindedir.
2. Yerel bir değişken, tanımlandığı blok arasında kaldığı sürece faaliyet alanındadır. Bu konuda şimdilik kafanızın karışmasına gerek yok.
3. for, while ve do-while gibi döngü bloklarında tanımlanan değişkenler döngünün dışına çıkılmadığı sürece faaliyet alanındadırlar.
Mesela aşağıdaki kısa örnekte tanımlanan her iki "a" değişkeni birbirinden bağımsızdır ve bellekte ayrı bölgelerde saklanırlar.
using System;
public class faaliyetalani {
public static void Main()
{
{ //Birinci blok int a=20 ;
}
{//İkinci blok int a=20 ;
}
}
}
Yukarıdaki program derlendiğinde varsayılan derleyici ayarlarıyla uyarı verecektir, ancak bunun sebebi faaliyet alanları değildir. Her iki blokta da bildirilen "a" isimli değişkenler herhangi bir yerde kullanılmamıştır. Bu yüzden derleyici uyarı verecektir. Diğer yandan örnekte birinci ve ikinci blokta tanımlanan "a" isimli değişkenler Main bloğu içinde geçirsizdir. Birinci a değişkeninin faaliyet alanı 1. blok, ikinci a değişkeninin faaliyet alanı ise 2. bloktur. Bu durumda MainO bloğunda Console.WriteLine(a); gibi bir ifade hatalıdır, çünkü Main bloğu içinde tanımlanan bir a değişkeni yoktur. Unutmamalıyız ki daha sonra detaylı olarak göreceğimiz for ve loop döngüleri de birer blok olduğu için bu bloklarda tanımlanan değişkenler döngü bloğunun dışında geçersiz olacaktır.
Yukarıdaki örnekte gözümüze çarpan diğer bir yenilik ise '//' karakterleri ile başlayan satırlardır. Bu karakterlerle başlayan satırlar yorum satırlarıdır. Yorum satırları genellikle programın kaynak kodunu açıklamak için kullanılır. Yorum satırları iki şekilde kullanılabilir.
Birincisi tek satır halindeki yorumlardır, buna bir örnek verecek olursak; using System;
public class yorumsatir {
public static void Main()
{
Console.WriteLine("Yorum");
//Burası bir yorum satırıdır.
}
İkinci yöntem ise birden fazla satırı içerecek yorumları eklemektir, bu tür bir kullanıma örnek aşağıdaki gibi verilebilir..
using System;
public class yorum_satir2 {
public static void Main()
{
Console.WriteLine("Yorum");
/*
Burası bir yorum satırıdır.
Aynı zamanda burası da yorum satırıdır.
*/
}
}
'/*' ile 'V arasında kalan bölgeye istediğimiz sayıda yorum salın ekleyebiliriz.
Faaliyet alanı ile ilgili diğer bir önemli nokta ise faaliyet alanı devam eden bir değişkenin bir daha tanımlanmasının hataya yol açmasıdır. Örneğin aşağıdaki gibi bir durum derleme zamanında hata verecektir. Çünkü bir değişkenin faaliyet alanı bitmeden aynı isimli değişken tekrar tanımlanıyor.
public class faaliyet_alani {
public static void Main()
{
int a;
{
int a=20 ;
}
}
Gördüğünüz gibi Main bloğunda tanımlanan "a" değişkeninin laaliyet alanı açılan blokla devam etmektedir. Bu yüzden yukarıdaki gibi ifadeler geçersizdir. Üst seviyede açılan bloklar alt seviyedeki blokları kapsadığı için, ilk tanımlanan "a" değişkeni sonradan açılan blok içinde geçerliliğini sürdürmektedir.
Yukarıda anlatılan duruma ters düşüyor gibi görünse de aşağıdaki, kurallara uygun bir kullanımdır. Bu konuyu daha sonraki bölümlerde detaylı bir şekilde inceleyeceğiz.
using System;
public class faaliyet_alani {
static int a = 10;
public static void Main()
{
int a = 5;
Console.WriteLine(a);
}
}
Yukarıdaki örneği derleyip çalıştırdığınızda ekrana 5 yazdığını göreceksiniz. Bu demek oluyor ki Main işlevi içerisinde faaliyet alanı devam eden iki tane "a" değişkeni olmasına rağmen iç bloktaki "a" değişkeni ekrana yazıldı.