GenelProgramlamaUncategorized

C# Enum Nedir ? Enum Nasıl Kullanılır ?

C# Enum

Enum, enum sabitleri değişkenlerin alabileceği değerlerin sabit olduğu durumlarda, kodun okunabilirliği ve belirli kurallar dışına çıkılmaması için kullanabilirsiniz.

  • Genellikle sabit değerleri belirli kıstaslarda kullanabilmek amacıyla kullanabilirsiniz.
  • Sayısal verileri anlamlı kılabilmek amacıyla pek çok  dilde kullanılan bir yapıdır.
  • Dizeleri anlamlı isimlerle değiştirerek kodun netliğini arttırabilir.
  • Enum değerinde yapılan güncelleme, bunu kullanan tüm kodlarda etkili olur. Tek bir yerden tüm değerler güncellenmiş olursunuz.
  • Kullanıcıları tek tip değerlere yönlendirirsiniz, hataları azaltırsınız.

Genel kullanımı ise şu şekildedir :

[Erişim Belirteci] enum [Verilecek isim]
{
[Key]=[Value],
[Key]=[Value],
}

enum VehicleType {
Car,
Truck,
Motorcycle,
Bicycle,
Bus
}

Yukarıdaki örneği incelersek;
Eğer tanımlamalara herhangi bir değer belirtmez iseniz ilk tanımlama 0 (sıfır) ile başlayacaktır.
Bu şekilde bir tanımlama ile işlem yaptığınızda “(int)VehicleType.Car” olarak kullandığınızda göreceğiniz sonuç 0 (sıfır)’dır.

enum Status
{
Inactive, //Otomatik olarak 0 atanacaktır.
Active = 5, // Doğrudan atanan değeri 5 olur.
Suspended // Burada ise bör inceki değerden devam edecektir. Bu durumda ise Suspended 6 olacaktır.
}

Enum tanımlamaları yaparke açık bir şekilde veri türünüde belirtebilirsiniz.

enum SmallNumbers : byte
{
One = 1,
Two = 2,
Three = 3
}

Burada türünü byte olarak belirttiğimiz için int türüne göre daha küçük bir aralığa izin verecektir. Ancak bu durumunda faydaları bulunmaktadır. Boyut ve bellek anlamında tasarruf sağlayabilirsiniz. Belirli sayısal türler bekleyen harici sistemler veya dillerle çalışıyorsanız, temel türü belirtmek uyumluluğu sağlayabilir.
Numaralandırmaları veritabanında saklarken, temel türlerin belirtilmesi depolamanın boyutunu etkileyebilir ve performansı artırabilir.

Enumların bir diğer kullanımı ise Flags attribute ile olmaktadır.

[Flags]
public enum Permissions
{
None = 0,
Read = 1,
Write = 2
}

Console.WriteLine(Permissions.Read | Permissions.Write); //Read , Write

Console.WriteLine(Permissions.None | Permissions.Read ); //Read

Console.WriteLine((int)Permissions.None | (int)Permissions.Read ); //2

Console.WriteLine((int)Permissions.Read | (int)Permissions.Write); //3

Belirli bir Enum’da değer olup olmadığını ise HasFlag metodu sayesinde öğrenebilirsiniz.

Permissions permission = Permissions.Read | Permissions.Write;

Console.WriteLine(permission.HasFlag(Permissions.Read)); //True



Paylaş

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir