C#

C# “static” Kullanımı

Merhabalar, bu yazı köprü öncesi son çıkış diyebiliriz. Artık OOP için gerekli olan tüm bilgileri edinmiş olarak, derinlemesine giriş yapmaya hazır olacağız. 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.

Bu bilgileri verdikten sonra kod üzerinde biraz daha inceleyelim.

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() 
        {
            
        }
    }

5 Yorum

Yorum Yap