C# Enum (Numaralandırma) Nedir?
Enum (Enumeration - Numaralandırma), C# dilinde sabit değerlerin bir grup halinde tutulmasını sağlayan bir veri tipidir. Enum'lar, programda belirli bir kategoriye ait sabit değerleri anlamlı isimlerle saklamak için kullanılır.
Enum’un Temel Özellikleri
- Enum, varsayılan olarak
int
türündedir ve her eleman sıfırdan başlayarak otomatik olarak numaralandırılır. - Enum değerleri varsayılan olarak
0, 1, 2, ...
şeklinde artar, ancak istenirse özel değerler atanabilir. - Kodun okunabilirliğini artırır ve hata yapma olasılığını azaltır.
Enum Tanımlama
Bir enum tanımlamak için enum
anahtar kelimesi kullanılır.
enum Days { Monday, // 0 Tuesday, // 1 Wednesday, // 2 Thursday, // 3 Friday, // 4 Saturday, // 5 Sunday // 6 }
Enum Kullanımı
using System; class Program { static void Main(string[] args) { Days today = Days.Friday; Console.WriteLine($"Bugün: {today}"); Console.WriteLine($"Bugünün sayısal değeri: {(int)today}"); } }
Programın Çıktısı
Bugün: Friday Bugünün sayısal değeri: 4
Özel Değerlerle Enum Tanımlama
Enum elemanlarına özel değerler atanabilir:
enum Status { Pending = 1, Approved = 2, Rejected = 3 } class Program { static void Main(string[] args) { Status currentStatus = Status.Approved; Console.WriteLine($"Durum: {currentStatus} ({(int)currentStatus})"); } }
Programın Çıktısı
Durum: Approved (2)
Enum ile Switch Kullanımı
Enum değerlerini kontrol etmek için switch-case
kullanılabilir.
enum TrafficLight { Red, Yellow, Green } class Program { static void Main(string[] args) { TrafficLight light = TrafficLight.Red; switch (light) { case TrafficLight.Red: Console.WriteLine("Dur!"); break; case TrafficLight.Yellow: Console.WriteLine("Hazır ol!"); break; case TrafficLight.Green: Console.WriteLine("Geç!"); break; } } }
Programın Çıktısı
Dur!
Enum İçindeki Değerleri Listeleme
Enum elemanlarını Enum.GetValues()
ile listeleyebilirsiniz.
enum Colors { Red, Green, Blue, Yellow } class Program { static void Main(string[] args) { foreach (var color in Enum.GetValues(typeof(Colors))) { Console.WriteLine($"{color} = {(int)color}"); } } }
Programın Çıktısı
Red = 0 Green = 1 Blue = 2 Yellow = 3
Enum ile String ve Integer Dönüştürme
Enum değerlerini string
ve int
türüne dönüştürebilirsiniz.
enum PaymentStatus { Pending = 1, Completed = 2, Failed = 3 } class Program { static void Main(string[] args) { // Enum değerini string'e çevirme PaymentStatus status = PaymentStatus.Completed; string statusText = status.ToString(); Console.WriteLine($"Durum: {statusText}"); // String'i Enum'a çevirme PaymentStatus parsedStatus = (PaymentStatus)Enum.Parse(typeof(PaymentStatus), "Failed"); Console.WriteLine($"Çevrilen durum: {parsedStatus}"); // Integer'ı Enum'a çevirme PaymentStatus statusFromInt = (PaymentStatus)2; Console.WriteLine($"Sayıdan çevrilen durum: {statusFromInt}"); } }
Programın Çıktısı
Durum: Completed Çevrilen durum: Failed Sayıdan çevrilen durum: Completed
Flags Attribute Kullanımı
Birden fazla değeri aynı anda kullanabilmek için [Flags]
attribute'u kullanılabilir.
[Flags] enum FilePermissions { Read = 1, Write = 2, Execute = 4 } class Program { static void Main(string[] args) { FilePermissions permissions = FilePermissions.Read | FilePermissions.Write; Console.WriteLine($"İzinler: {permissions}"); // Belirli bir iznin olup olmadığını kontrol etme bool canRead = (permissions & FilePermissions.Read) == FilePermissions.Read; Console.WriteLine($"Okuma izni var mı? {canRead}"); } }
Programın Çıktısı
İzinler: Read, Write Okuma izni var mı? True
Sonuç
Enum, belirli sabit değerleri daha okunaklı ve yönetilebilir hale getirmek için kullanılır. Özellikle belirli kategorilere ayrılmış değerleri temsil etmek için idealdir. Ayrıca, Enum değerleri switch
yapılarıyla kontrol edilerek programın akışı daha düzenli hale getirilebilir.