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.
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
.
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'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'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");
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.
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.