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.
int
türündedir ve her eleman sıfırdan başlayarak otomatik olarak numaralandırılır.0, 1, 2, ...
şeklinde artar, ancak istenirse özel değerler atanabilir.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 }
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}"); } }
Bugün: Friday Bugünün sayısal değeri: 4
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})"); } }
Durum: Approved (2)
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; } } }
Dur!
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}"); } } }
Red = 0 Green = 1 Blue = 2 Yellow = 3
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}"); } }
Durum: Completed Çevrilen durum: Failed Sayıdan çevrilen durum: Completed
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}"); } }
İzinler: Read, Write Okuma izni var mı? True
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.