Instance elemanlar için her seferinde yeni bir örnek oluşturmamız gerekir. Ve her bir örnek üzerinde istediğimiz değişikliği yapabiliriz. Yani instance elemanlardan istediğimiz kadar örnek oluşturabiliriz.
Static ise tam tersi olup o elemandan en fazla bir tane örnek üretilmesine izin verir. Bu yüzden sadece onun üzerinde işlem yapabiliriz.Bir başka deyişle yaratılan her static eleman herhangi bir örnek uzayda aynı elemandır.
Aşağıda bir örnekle açıklayalım.
- Bunun için önce bir konsol projesi açalım.
- Burada aşağıdaki gibi bir class oluşturalım
public class ElemanBurada dikkat ederseniz üretilen her örnek Eleman class için static olan Eleman sayısı artacaktır.
{
public string Ad; // Instance field
public static int ElemanSayisi; // Static field
public Eleman(string n) // Constructor
{
Ad= n; // Assign the instance field
ElemanSayisi= ElemanSayisi+ 1; // static ElemanSayisi artıyor.
}
}
3.Aşağıdaki programımızı yazalım.
Eleman p1 = new Eleman("Ali");Burada dikkat ederseniz Ali,Ayşe ve Mehmet adında üç örnek class oluşturduk. Ve her biri için kaydedilen isim ayrıdır. Fakat static olan eleman sayısı hepsi için tek olacaktır. Static olduğu için örnek uzayda Eleman sayısını çekemeyiz.Örneğin "p1.ElemanSayisi" adında bir eleman çekemezsiniz. Çünkü static türler her bir eleman için ayrı ayrı üretilemez. O yüzden ClasAdı.StaticEleman formatında çekebiliriz.
Eleman p2 = new Eleman("Ayşe");
Eleman p3 = new Eleman("Mehmet");
Console.WriteLine(p1.Ad); // Ali
Console.WriteLine(p2.Ad); // Ayşe
Console.WriteLine(p3.Ad);// Mehmet
Console.WriteLine(Eleman.ElemanSayisi); // 3
Console.ReadKey();
Bu yüzden Eleman.ElemanSayisi şeklinde çekilmiş olduğuna dikkat ediniz.
Sizde isterseniz yeni isimler ekleyerek ya da silerek ElemanSayisi üzerindeki değişiklikleri inceleyebilirsiniz.
Kaynak: C# 5.0 in a Nutshell