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
inttü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.