12
Ara'13

OOP 6: Static Kavramı ve Static Elemanlar (C# ile OOP)

Static, adından da anlaşılabileceği gibi “durağan” olmakla alakalıdır. Örneğin static bir değişken belleğe sadece bir defa çıkarılır ve durağandır. Erişmek isteyen herkes aynı adresten okuma yapar. Fakat değerlerini değiştirmek mümkündür. Sabitlerle karıştırılmamalıdır. Sabitlere tanımlandıkları anda bir kereye mahsus değerleri atanır ve değiştirilemez fakat static elemanların değerleri istenildiğinde değiştirilebilir. Daha iyi kavramak için, static elemanların ne tip ihtiyaçlarda kullanılabileceğini inceleyelim.

Static Field ve Static Property

Mesela bir sınıftan kaç adet nesne örneklendiğini bilmek istiyoruz. Belki de bir oto galerimiz var ve adını tek yerde tutmak, her nesne için aynı ada ulaşmak istiyor olabiliriz. Bunlar ve bunlar gibi ihtiyaçlar için static elemanlara başvurmak gerekiyor. Bir elemanı static olarak işaretlemek için static anahtar kelimesini kullanmak yeterlidir.

class OtoGaleri
{
    private static string _firmaAdi;
}

Bu eleman static olmasaydı, otoGaleri sınıfından bir nesne örneklendiğinde _firmaAdi default değeri ile belleğe çıkacaktı. Bir nesne daha örnekendiğinde yine yeni bir _firmaAdi belleğe default değeriyle çıkacaktı. Kısacası ne kadar nesne örneklenirse o kadar da _firmaAdi belleğe çıkacaktır. Fakat _firmaAdi için static anahtar kelimesi kullanıldığında, OtoGaleri sınıfından ne kadar nesne örneklenirse örneklensin bellekte tek bir _firmaAdi elemanı varlığını sürdürecektir. Hal böyle olunca bu elemana nesne örneği üzerinden erişmek, kodu yazanda veya okuyanda yanılgıya sebep olabilir. Aslında static olan bu elemanın sadece bir nesne için değiştiğini düşündürtebilir. Öyleyse mantıklı olan, static elemana tip adı üzerinden erişmek olabilir. C#’ta da static elemanlara erişim tip adı üzerinden yapılmaktadır.

 

Static elemana yalnızca tip adı üzerinden erişilebildiğini gösteren ekran alıntılarını aşağıdan inceleyebilirsiniz.

İlgili sınıf aşağıdaki şekilde kodlanmıştır. Bir static field ve bu fielda erişim sağlayan bir propertyden oluşmaktadır.

Yeni makaleleri E-Mail ile takip edin!