Son Haberler
Anasayfa / Yazılım / C# / Statik Üyeler

Statik Üyeler

Nesne yönelimli programlamada bir sınıf içindeki değişkenler, methodlar yani üyeler statik niteliğinde olabilirler. Bir üyenin statik niteliğinde olması demek bir sınıf içindeki yordam (method), özellik (property) gibi alanlardan rahatlıkla erişilebilmesi anlamına gelmektedir. Statik üyeler doğrudan sınıfın kendi üyeleri olup sınıftan üretilen nesneden bağımsız hareket etmekdedirler. Tüm nesnelerin ulaşabileceği ortak bir bellek alanında tutulurlar. Bu nedenle bir statik üyeye ulaşabilmek için ilgili sınıftn bir nesne oluşturmaya gerek bulunmamaktadır. Bu da statik üyelerle işlem yapmayı kolaylaştırmaktadır.
Bütün statik üyeler ister value type ister reference type olsun, bu durum hiç önemsenmeksizin heap alanı üzerinde tutulur. Statik üyeler durağan değişkenler veya genel değişkenler olarak da adlandırılabilir ve tanımlanırken static anahtar sözcüğü ile tanımlanırlar. Statik üyeler tanımlanırken ilk anda değer tanımlanmamış ise değişkenin türüne göre ilk değer otomatikmen tanımlanır, yani sayısal bir veri tipinde default değer 0, nesnede default değer null, bool bir değişkende default değer false olarak kabul edilir. Sadece değişkenler değil, methodlar ve classlar statik olarak tanımlanabilirler. Statik üyeler ilgili sınıfla birlikte yüklenir ve uygulama sonlandırılana kadar aktif kalır.

Bir örnek yaparsak :

Örnekten anlaşılacağı üzere statik üyelere bir instance almadan rahatlıkla erişebiliyoruz, fakat statik olmayan için ilgili class’tan bir instance almamız gerekiyor. Aynı durum tersi içinde geçerlidir, bir nesne üzerinden de statik üyelere erişemeyiz.

Yani bu örneğimeze göre;

oIslem.SubeKod ve oIslem.KampanyaDurumu erişilemezdir. Statik üyeler için statik methodlar da tanımlanabilir demiştik. Buada dikkat edilmesi gereken husus, statik bir yordam ile ancak statik yordamlara erişilebilir. Örnekler isek;

Sadece methodlar değil constructorlar da statik olarak tanımlanabilmektedirler. Static Constructorlar için, açık bir şekilde çağrılamaz, bu nedenle private olarak tanımlanırlar. Kaç nesne oluşturulursa oluşturulsun sadece ilk nesnede çalışırlar. Parametre almazlar, overload edilemezler ve inheritence alınamazlar. Class’a ait bir instance oluşturmadan önce çalışırlar. Herhangi bir access modifier alamazlar. Class’a ait statik değişkenin başlangıç değişkeni verilmesinden sonra ve diğer statik üyelerden önce yürütülürler.

Static Constructor örneği yaparsak :

Bir cevap yazın

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