C# - Static İfadesi

Bir classla çalışmanın olağan yolu sınıftan yeni bir nesne oluşturmak (instantiate) ve bu nesne ile çalışmaktır. Çoğu durumda, classların birden fazla kopyasını yaratıp bunları farklı şekillerde kullanabilirsiniz. Ancak bazı durumlarda kullanabileceğiniz sadece bir classa sahip olmak isteyebilir, ondan nesne oluşturmadan bu classa ait üyeleri kullanabilirsiniz. Örnek olarak nerede ve ne şekilde kullanılırsa kullanılsın her zaman aynı kalan değişkenli bir sınıfınız olabilir. Buna static üye denir.

Bir sınıfın kendisi statik olabilir ve hem fonksiyonları hem de fieldları (alan) olmak üzere statik üyelere sahip olabilir. Statik bir classtan nesne oluşturulamaz, kullanılan classın üyeleri grup halinde çalışır. Statik bir class yalnızca statik üyeler içerebilmekteyken statik olmayan bir class ise hem statik hem de statik olmayan üyeler içerebilir. Bu durumda statik olmayan üyeleri kullanmak için nesne yaratılmalıdır. Bu nesnede statik üye kullanılamaz. Statik olmayan classtaki statik üye nesne yaratılmadan (aynı statik classlardaki gibi) kullanılır.

Basit bir statik class örneği aşağıda gösterilmiştir.

public static class Dikdortgen
{
    public static int CevreHesapla(int boy, int en)
    {
        return (boy + en) * 2;
    }
}

Gördüğünüz gibi, classın statik olduğunu göstermek için "static" anahtar sözcüğünü kullanıyoruz. Class taki fonksiyon da statik olmak zorunda bu yüzden onda da "static" anahtar sözcüğünü kullanılmaktadır. Eğer bu şekilde yaratmasaydık derleyici hata verirdi ve programımız çalışmazdı. Çünkü deminde belirttiğimiz gibi statik bir classın sadece statik üyeleri olabilir.

Yukardaki CevreHesapla() fonsiyonumuzu aşağıdaki gibi kullanırız.

Console.WriteLine( Dikdortgen.CevreHesapla(20, 8) );

Statik olmayan bir classta statik bir üyeyi aşağıdaki şekilde yaratıp kullanabiliriz.

public class Dikdortgen
{
    private int boy, 
    private int en, 

    public Dikdortgen(int boy, int en)
    {
        this.boy = boy;
        this.en = en;
    }

    public void Yazdir()
    {
        Console.WriteLine( Dikdortgen.CevreHesapla(this.boy, this.en) );
    }

    public static int CevreHesapla(int boy, int en)
    {
        return (boy + en) * 2;
    }
}

Görüldüğü üzere classı statik hale getirdik. Bununla birlikte classa bir de constructor (yapıcı) ekledik. Constructorda alınan en ve boy parametreleri private üyelere atanır ve bu üyeler CevreHesapla() fonksiyonunda (this.boy, this.en) otomatik olarak kullanılır.


C#

İlginizi Çekebilir

C# - Alan (Field)

C# - Soyut Sınıf (Abstract Class)

C# - Nullable Tipler

C# - Interface

C# - Parametre