C# “static” Kullanımı

Static anahtar sözcüğünün aşağıdaki listede olduğu gibi çeşitli durumlarda kullanabiliriz.

  • Bir sınıf(class) içerisinde bulunan metodlar(methods) static olarak tanımlanabilir.
  • Bir sınıf(class) içerisinde bulunan alanlar (fields) static olarak tanımlanabilir.
  • Bir sınıfa ait static bir yapıcı metod (constructors) tanımlanabilir.
  • Değişmezler (constants) bilinçsiz olarak (implicit) static tanımlanmışlardır.
  • Readonly referanslar açıkça belirtilmedikçe static değildirler.
  • C# 2.0 static sınıflara izin verir.

Normalde bir sınıfın üyesine o sınıftan oluşturulan bir nesne ile erişilmektedir. Örneğin Araba isimli bir sınıfımız var. Bu sınıfın içinde de tekerlek isimli bir değişken var. Eğer değişken static değilse değişkene:

Araba a = new Araba();
a.tekerlek = 4;

şeklinde erişiyoruz. Yani öncelikle sınıfa ait bir nesne oluşturuyor ardından değişken veya metoda ulaşıyoruz. Ancak bazen nesnelerden bağımsız olarak bazı metotlara veya değişkenlere erişmek gerekebilir. Metotlar ve değişkenler static olarak tanımlanabilir.

Static bir metot veya değişken şu şekilde çağrılır;

Araba.Otomobil();
Araba.tekerlek = 4;

“static” değişkenlere global değişkenler diyebiliriz. “static” bir değişkeni tüm üyeler kullanabilir. Yani değeri her yerde aynıdır. Değişken kullanılmadan önce ilk değer ataması yapılır. Eğer ilk değer ataması yapılmazsa nümerik değerler 0, nesne referansları null, bool değişkenler ise false değeri alırlar. Yani static bir değişkenin her zaman bir değeri vardır.

“static” bir metodun this referansı olamaz. “static” bir metot yalnızca kendi sınıfı tarafından tanımlanan static değişkenlere erişebilir. Diğer “static” yapılar;
– static Yapılandırıcılar
Bir sınıfa ait olan özelliklere ilk değerleri atmak için kullanılır.
– static Sınıflar
“static” sınıflar nesne oluşturamaz ve yalnızca static üyeler barındırabilirler.

class StaticMetot
{
    // static olarak tanımlanan değişken
    public static int motor = 1000;
    public int benzin = 3; // static olmadığı için kendi sınıfından olsa bile static olan bir metot erişemez

    // static olarak tanımlanan metot
    public static int Otobus()
    {
        // enerji = 200; hatalı kullanım
        // Insan(); Hatalı kullanım

        StaticMetot st = new StaticMetot();

        st.Otomobil(); // Doğru kullanım
        st.benzin = 2; // doğru kullanım
        return motor / 2;
    }

    public void Otomobil() // static olmadığı için kendi sınıfından olsa bile static olan bir metot erişemez
    {

    }
}

class StaticOrnek
{
    static void Main()
    {
        // static değişkene ilk değer daha sınıfından nesneler oluşmadan atanır
        Console.WriteLine("İlk atanan değer: " + StaticMetot.motor);

        StaticMetot.motor = 60;
        Console.WriteLine("şimdiki değeri: " + StaticMetot.motor);
        Console.WriteLine("Makine metodunun dönüş değeri: " + StaticMetot.Otobus());
    }

}

static class StaticOrnek2
{
    // static bir yapılandırıcı örneği
    static StaticOrnek2()
    {
        int kapi = 4;
        string isim = "Mercedes";
    }

    static void Minibus()
    {

    }
}

Faydalanılan Likler;
http://www.buraksenyurt.com/post/C-Temelleri-Static-Olmak-bsenyurt-com-dan.aspx
http://kod5.org/c-static-kullanimi/

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google fotoğrafı

Google hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s