C# Dersleri 79  - Enum

C# Dersleri 79 - Enum


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.

Bu içeriği beğendiyseniz paylaşarak destek olabilirsiniz!


Eğitim İçeriği

Eğitim C# Dersleri
Kategori Programlama Dili
Ders Adeti 80 Ders
Dil Türkçe
Güncelleme 04/2024
  • HTML Dersleri

    HTML Dersleri Sıfırdan İleri Seviyeye

    Kategori Web Programlama
    Ders Süresi 19 Ders
    Dil Türkçe
    Güncelleme 12/2020
    Derse Başla
  • Java Dersleri

    Java Dersleri ve Nesne Yönelimli Programlama

    Kategori Programlama Dili
    Ders Süresi 125 Ders
    Dil Türkçe
    Güncelleme 09/2020
    Derse Başla
  • CSS Dersleri

    CSS Dersleri Başlangıçtan İleri Seviyeye

    Kategori Web Programlama
    Ders Süresi 49 Ders
    Dil Türkçe
    Güncelleme 10/2021
    Derse Başla
  • Java Örnek Projeler

    Java Örnek Projeler

    Kategori Programlama Dili
    Ders Süresi 20 Ders
    Dil Türkçe
    Güncelleme 10/2022
    Derse Başla
  • C# Dersleri

    C# Dersleri ve Nesne Yönelimli Programlama

    Kategori Programlama Dili
    Ders Süresi 100 Ders
    Dil Türkçe
    Güncelleme 04/2024
    Derse Başla