NUMARALANDIRMA
Numaralandırma (enumeration) belli bir sözcüklerin, belli tamsayıları temsili durumlarında kullanılan bir yapıdır. Değişkenlerin alabileceği değerlerin sabit olduğu durumlarda kullanılır.
Numaralandırma (Enum) Tanımlama
Numaralandırmaları tanımlamak için ‘enum’ anahtar kelimesini kullanırız.
Örneğin, içindeki ay isimlerini barındıran bir numaralandırma tanımlayalım.
enum enumadi
{
sabit1,
sabit2,
...
}
Örnek:
enum aylar{
Ocak,Şubat ,Mart,Nisan,Mayıs,Haziran,Temmuz,Ağustos,Eylül,Ekim,Kasım,Aralık
}
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiom5ESAn4_qx194f0VQ8WXuHIhIm2dh6Q_XAk7nyokY6tqw3zaIOZz13PWtFKorb9VO80feTrcmnNDSwdKbu7YEabhuitaU77GGKX58fzD64ZvfkExKJ7zdGhuQJSN7ccpe_eqJlIEXc/s1600/tablo1.jpg)
Örnekte Ocak ayı 0 değerini alacak ve ondan sonra gelen sabitlerin değeri birer artarak devam edecektir.
Duruma göre tanımladığımız sabitlere farklı sayısal değerler de atayabiliriz. Bu işlem için “=” işlecini kullanmalıyız.
enum aylar{
Ocak=1,Şubat ,Mart,Nisan,Mayıs,Haziran,Temmuz=1,Ağustos,Eylül,Ekim,Kasım,Aralık
}
Yukarıda yazan örnekte ki tanımlamayı yaparsak sabitlerimizin değerleri aşağıdaki gibi olur.
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkK8eWAsnPuawJNpqWjb5UsqSeNIy3UKeXuSUME8lpEP3DJi0dUvxr9zlaLns8I7sBMMpYhy5V6A5lT75g1mYBFpMaF0_iUVhsntNbwP8wOKEFs6afq1dhhRAslKF0bBgvoIlT7OjzwMQ/s1600/tablo2.jpg)
Numaralandırma (Enum) Yapısını Kullanma
Bir önceki başlıkta numaralandırmaların nasıl tanımlandığını belirttik. Şimdi ise tanımladığımız numaralandırma yapılarının program içinde nasıl kullanacağımızı belirtelim.
Öncelikle aylar adında bir enum tanımlayalım.
enum aylar {
Ocak, Şubat, Mart, Nisan, Mayıs, Haziran, Temmuz,
Ağustos, Eylül, Ekim, Kasım, Aralık
}
Şimdi de enum’u program içinde çağıralım.
class Program
{
static void Main(string[] args)
{
aylar ay = aylar.Şubat;
Console.WriteLine(ay);
Console.Read();
}
}
Ekran görüntüsü:
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7XhIeOldv7billSprS1p1iuOoURJgIkhQMwAaVPRgQ6ZMhAzWHIptcI3RUZLp-CatNCDNbDF8OtzhXRNofPPLVIibhgkauWucg7NTygxzUYoL3j-BA6cpbcUZhfHUlhlrMNn2YHQ3CWc/s1600/1.jpg)
YAPILAR (STRUCT)
Nesne tabanlı programlama beş veri tipini destekler. Bunlar Class, Struct, Enum, Interface ve Delegate tipleridir. Aralarında mantıksal bir ilişki bulunan ama farklı türdeki verilerin bir arada bulunması gereken durumlarla karşılaşılabilir. Bu durumlarda belli bir grup verinin bir arada tutulması için oluşturulan yeni birime Yapı (struct) denir.
Yapılar değer türündedir. Dolayısıyla belleğin yığın(stack) bölümünde tutulurlar.. Bellek kullanım bakımından yığın (stack) ve öbek (heap) olmak üzere ikiye ayrılır.
Yığın bölümünde veriler üst üste gelecek şekilde depolanır. Yeni bir veri eklendiğinde bu belleğin en üst bölgesine yerleştirilir. LIFO (Last In First Oust) mantığına göre çalışır. Yani son giren ilk çıkar. Verilere erişim basit olduğu için hızlıdır.
Öbek kısmında ise boş bir alan oluşturulur ve veriler rastgele yerleştirilir. Vereilere erişim karmaşık olduğundan daha yavaştır.
Değer türleri belleğin yığın(stack) bölümünde tutulurken; referans türler belleğin öbek (heap) bölümünde tutulur.
Örneğin; sınıflar (class) referans türünde olduklarından dolayı belleğin öbek(heap) bölümünde tutulur.
Yapı (Struct) Tanımlama
Yapıları tanımlamak için “struct” anahtar sözcüğünü kullanırız. Bir yapının genel tanımlama şekli aşağıdaki gibidir.
struct yapi-ismi
{
yapi-elemanlari-listesi;
}
Örnek:
struct Ogrenci
{
int okulNo;
string ad, soyad;
}
Yapı ve Sınıf Arasındaki Farklar
Yapılar değer türünde olduklarından belleğin yığın (stack) bölümünde, sınıflar ise referans türünde oldukları için belleğin öbek (heap) bölümünde depolanırlar.
Sınıflar için varsayılan (default) yapıcı (constructor) metotlar yazılabiliyorken yapılarda bunu yapamayız. Fakat yapılarda parametreli yapıcılar tanımlayabiliriz.
Burada dikkat edilmesi gereken nokta ise yapılarda tanımladığımız parametreli yapıcılara ilk değer ataması yapmak zorundayız. Sınıflarda ise buna gerek yoktur. Çünkü derleyici bizim yerimize ilk değer atamasını yapacaktır.
Hiç yorum yok:
Yorum Gönder