C# programlama dilinde struct'lar (yapılar) class'lara (sınıflara) oldukça benzerler; ancak struct'lar değer dipindedir (value type) ve class'lar ise referans tipindedir (reference type). Bunun pratikteki anlamı ise şudur:
- Eğer bir sınıftan (class) bir nesne oluşturursanız boş olabilir
- Bir yapıdan (stcuct) bir nesne oluşturduğunuzda ise boş olamaz
Örnek: C# programlama dilinde bir struct oluşturun oluşturun
struct Bardak
{
public string tur;
public double hacim;
public DateTime uretimtarihi;
public bool kulplu;
public void OzellikleriGoster()
{
System.Console.WriteLine("Bardağın türü: {0}", tur);
System.Console.WriteLine("Bardağın hacmi: {0} cm küp", hacim);
System.Console.WriteLine("Bardağın üretim tarihi: {0}", uretimtarihi);
if (kulplu)
System.Console.WriteLine("Bardak kulplu");
else
System.Console.WriteLine("Bardak kulpsuz");
}
}
Bardak bardak;
bardak.tur = "çay bardağı";
bardak.uretimtarihi = DateTime.Parse("01.01.2000");
bardak.hacim = 20;
bardak.kulplu = true;
bardak.OzellikleriGoster();
Çıktı:
Bardağın türü: çay bardağı
Bardağın hacmi: 20 cm küp
Bardağın üretim tarihi: 1/1/2000 12:00:00 AM
Bardağın kulplu
Class ve Struct Arasındaki Farklar
- Struct'larda parametresiz constructor (kurucu) eklenemez
- Değer tipi olduğu için struct nesneleri null olamazlar, ama sınıflar için böyle bir kısıtlama yoktur
- Struct'lara Interface implement edilebilir ancak Struct'lar kalıtımı desteklemezler (başka sınıftan ya da yapıdan türetilemezler). Sınıflar ise hem kalıtımı, hem de interface'i desteklerler
- Struct elemanlarının default değeri public'tir, class elemanlarının default değeri ise private'tir.
Önceki bazı diğer ilgili yazılarım için;
bkz: C# Erişim Belirleyicileri (Access Modifiers)
bkz: Programlamada Encapsulation (Kapsülleme) Nedir?
bkz: C# Abstract Class ile Interface Arasındaki Farklar Nelerdir?
bkz: C# Polymorphism (Çok Biçimlilik) Nedir?
bkz: C# Virtual Metod Nedir ve Nasıl Kullanılır?
bkz: C# Sınıf ve Nesne Nedir?