Struct Nedir ? C#
Bu yazıda Struct (Yapı) nedir ondan bahsedeceğim. Ne olduğundan ziyade ne zaman kullanılmalıdır sorusunun cevabı daha önemlidir.
C# dilinde struct, veri yapılarını temsil eden değer tipi bir veri türüdür.Sınflar referans tiptedir. Bir parametreli yapıcı, statik yapıcı, sabitler, alanlar, yöntemler, özellikler, dizinleyiciler, operatörler, olaylar ve iç içe türler içerebilmektedir. Sınıflara benzerler; onlar gibi tanımlanır ve onlar gibi oluşturulurlar.
Sınıf ile arasındaki en büyük farklardan bazılar;
- Class bir başka Class yapısından Miras(Inheritance) alabilmektedir. Ama struct bunu desteklemez.
- Sınıflar bellekte heap bölgesinde tutulurken structlar stack bölgesinde tutulmaktadır.
- Class yapısı ile işimiz bittiğinde onu hafızadan silmemizi sağlayan Sonlandırıcı(Deinitializer) metodlarını çağırmamız gerekir.
- Bir Struct için varsayılan yapıcı metod (default constructor) yazamayız. Derleyici hatası alırız.
public struct Araba
{
public string Marka { get; set; }
}
Şeklinde aynı sınıflar gibi tanımlanmaktadırlar..
16 byte’tan küçük veriler için yapıların kullanılması, 16 byte’tan büyük veriler için sınıfların kullanılması önerilmektedir.
Not = Bir Struct içersinde yer alan constructor metod(lar) içinde tanımlamış olduğumuz alanlara başlangıç değerlerini atamak zorundayız. Sınıftaki constructor(lar) içinde kullanılan alanlara başlangıç değerlerini atamazsak, derleyici bizim yerimize sayısal değerlere 0, boolean değerlere false vb… gibi başlangıç değerlerini kendisi otomatik olarak yapar. Ancak derleyici aynı işi yapılarda yapmaz. Parametreli constructorlarda her bir alan için başlangıç değerlerini bizim vermemiz gerekmektedir.