12/13/2005

Struct ve Class Farkları

C# ile tanıtılan özelliklerden biri de STRUCT objesi. Struct'ı, class'ın biraz kırpılmış hali olarak düşünebilirsiniz.

Ne zaman struct kullanmalı?
Eğer bir grup birbiriyle alakalı veriyi bir arada saklayabilmek istiyorsanız, struct kullanmanız için ne duruyosunuz ki hala?.

Örnek Struct Yaratımı

struct Ogrenci
{
private string Isim;
private string Adres;
private string Sehir;
private int Telefon;
}

Kod içerisinde Struct Kullanımı

Ogrenci A = new Ogrenci; //Ogrenci structimizdan yeni bir instance yaratiyoruz
A.Isim = "Ahmet";
A.Telefon = 3251800;

Ne zaman class yerine struct kullanalım?
Struct'lar value-type(değer tipli) objelerdir. Class'lar ise (reference type)referans tipi objelerdir.
Struct olarak tanımladığınız objeler belleğin stack kısmında saklanırlar. Class objeleri ise belleğin heap kısmında saklanır.

Veriyi stackta saklamanın heap'te saklamaya göre ne avantajı var ona bakalım; Stack'tan veri çağırmak, heap'ten veri çağırmaya göre çok daha hızlıdir. Bu yüzden struct kullanımının hız açısından bir avantajı söz konusu.

Structların bir dezavantajı ise, bir struct objesi, bir diğer struct objesine assign edildiğinde(atandığında), aynı verinin, stack üzerinde 2 adet kopyası bulunacak ve veri çağrılırken performans düşüşüne sebep olacaktır.

Class kullanımında ise objenin bir kopyası yerine, sadece ona ait bir referans stack'te saklanır, ve 2 kere aynı verinin saklanması önlenmiş olur.

Structlar inheritance desteklemezler. Ancak class kullanarak ise inheritance'dan faydalanabilirsiniz.

C# veya VB.Net dilleri ile Struct kullanırken constructor kullanabilirsiniz. Construct kullanımı aynı class'lardaki şekilde yapılıyor. Tek farkı, herhangi bir arguman içermeyen boş constructor kullanımına struct'larda izin yok.

Bunlardan yola çıkarak gerekli durumlarda .Net programlarinizda struct'mi class'mi kullanacağınıza karar verebilirsiniz.

Unutmadan... "Struct ve Class farkları nelerdir?" sorusu bir mülakatta karşınıza çıkarsa şaşırmayın, çok geyik'te olsa .Net programcılığıyla ilgili giriş seviyesi pozisyonlar için yapılan başvurulardaki mülakatlarda sık sorulan sorulardan biri...