Etiketler

, , ,


Structure, Enumeration vs Class

Structure ve Enumeration değer tipleri (value type), Class ise referans tipleridir (referance type) Değer tipleri belleğin “stack” olarak adlandıran bölgesinde saklanırken, referans tipleri ise “heap” olarak adlandırılan bölgede saklanırlar.

Structure System.ValueType sınıfından açık olarak türetilir. Bu sınıfın asıl amacı System.Object tarafından tanımlanan “virtual” metotları “override” etmektir.

Çalışma zamanında System.Value sınıfından türetilen bir tiple karşılaşıldığında stack’e yerleştirilir.

Structure i new anahtar sözcüğüyle de kullanabiliriz, fakat constructor’ ımız mutlaka parametreli olmalı. Ayrıca Structure tanımlarken alanlara ilk değerlerini atayamazsınız, başka bir Structure dan türetemezsiniz.

struct A{
int x = 0 ; // Hatalı tanımlama
}

Sınıfı başka bir sınıftan türetebilirsiniz ayrıca yapılandırıcısında (constructor) alanlara ilk değerlerini atayabilirsiniz.

Enumeration ları Enum anahtar sözcüğüyle tanımlarınır. Sabit Enumerator listlerinden oluşan ayrık tiplerdir. Her bir Enumeration varsayılan olarak ilk değeri 0 dan başlayan “int” tipe eşlenir. Enumeration ların eşlendikleri değeri kullanabilmek için casting (down casting) yapılması gerekir.