avatar
·2 dk okuma
C# ile Structs (Yapılar)

C# ile Structs (Yapılar)

C# programlama dilinde, struct (yapı), ilkel veri türlerini veya farklı veri türlerini bir araya getirerek yeni bir veri türü oluşturmanızı sağlayan bir yapıdır. Class'lara benzerler, ancak bazı önemli farklılıklara sahiptirler. Struct'lar genellikle küçük veri gruplarını saklamak için kullanılır ve değer türüdürler, yani doğrudan değerleri saklarlar.

Struct Tanımlama

Bir struct tanımlamak için struct anahtar kelimesi kullanılır. Örneğin, bir banka hesabını temsil eden bir struct aşağıdaki gibi olabilir:

struct Hesap
{
    public int Id;
    public double Bakiye;
    public string Sahibi;
    public string Sehir;
}

Bu örnekte, bir Hesap struct'ı tanımlanmış ve dört adet public alan (field) içermektedir: Id, Bakiye, Sahibi ve Sehir.

Struct Kullanımı

Bir struct'ı kullanmak için, önce bir örneğini (instance) oluşturmanız gerekir:

Hesap hesabim = new Hesap();
hesabim.Id = 1;
hesabim.Bakiye = 10000.50;
hesabim.Sahibi = "Ali Veli";
hesabim.Sehir = "İstanbul";

Bu örnekte, Hesap türünde hesabim adında bir değişken oluşturulmuş ve alanlarına değerler atanmıştır.

Struct Metodları

Struct'lar içerisinde metodlar tanımlayabilir ve bu metodları struct'ın bir örneği üzerinden çağırabilirsiniz:

struct Hesap
{
    public int Id;
    public double Bakiye;
    // Diğer alanlar...

    public void ParaEkle(double miktar)
    {
        Bakiye += miktar;
    }

    public void ParaCek(double miktar)
    {
        Bakiye -= miktar;
    }
}

// Kullanımı:
hesabim.ParaEkle(500);
hesabim.ParaCek(200);

Struct Constructor (Yapıcı) Metodlar

Struct'lar için parametreli constructor'lar tanımlayabilirsiniz. Ancak, struct'larda parametresiz constructor tanımlanamaz çünkü varsayılan olarak zaten bir parametresiz constructor vardır ve bu, struct'ın alanlarını varsayılan değerlerle başlatır:

struct Hesap
{
    public int Id;
    public double Bakiye;
    public string Sahibi;
    public string Sehir;

    public Hesap(int id, double bakiye, string sahibi, string sehir)
    {
        Id = id;
        Bakiye = bakiye;
        Sahibi = sahibi;
        Sehir = sehir;
    }
}

// Kullanımı:
Hesap hesabim = new Hesap(1, 10000.50, "Ali Veli", "İstanbul");

Struct vs Class

Ana farklar:

  • Struct'lar değer türüdür ve stack üzerinde saklanır, class'lar ise referans türüdür ve heap üzerinde saklanır.

  • Struct'lar, küçük ve basit veri yapılarını temsil etmek için daha uygun olabilirken, class'lar daha karmaşık veri yapıları ve davranışlar için tercih edilir.

Sonuç

Struct'lar, C# programlamada veri saklama ve basit işlemler gerçekleştirme amacıyla kullanılan kullanışlı yapısal birimlerdir. Değer türü olmaları ve stack üzerinde saklanmaları nedeniyle, bazı durumlarda class'lara göre performans avantajları sunabilirler. Ancak, kullanım durumunuza bağlı olarak struct veya class kullanımı arasında doğru seçimi yapmak önemlidir.