C# nasıl enumerate edilir enum
Enumlar C# dilinde yaygın olarak kullanılmaktadır.
Ve C# adresinde enum adresini enumerate etmenin 4 yolu vardır.
- .Net 5 ve üzeri sürümlerde 
C# Enum.GetValues()adresini kullanma. - Eski .Net sürümlerinde 
C# Enum.GetValues()adresini kullanma. C# Enum.GetNames()adlarını dizeler olarak enumerate etmek için enum kullanmak.- Kullanma 
Linq 
Bunu daha iyi anlamak için bir örnek üzerinden gidelim.
İlk olarak bir C# enum
public enum LogLevel
{
   ERROR, 
   WARN, 
   INFO, 
   DEBUG
}
Bu enum farklı günlük kaydı seviyelerini temsil eder.
Şimdi enumerate için farklı yollar göreceğiz C# enum.
##.Net 5 ve üzeri sürümlerde C# Enum.GetValues() Generic yöntemini kullanma
.Net, yani .Net 5 ve üstünün en son sürümünü kullanıyorsanız, Enum.GetValues yöntemi için genel sürümü enumerate etmek için kullanabilirsiniz C# enum.
void loopEnum()
{
   LogLevel[] logLevels = Enum.GetValues<LogLevel>();
   
   foreach (LogLevel logLevel in logLevels)
   {
        Console.WriteLine(logLevel.ToString());
   }
}
Enum.GetValues ‘un yeni genel sürümü enum değerleri dizisini döndürür.
Ve ayrıca for veya foreach ifadelerini listelemek için kullanabiliriz C# enum isimler.
Dizi aşağıdakileri içerdiğinden enum türünü ToString() yöntemini kullanarak dizeye dönüştürmemiz gerekir.
Eski .Net sürümlerinde C# Enum.GetValues() adresini kullanma. 
.Net ‘un eski sürümlerinde Enum.GetValues() yöntemi için genel bir yöntem mevcut değildir.
typeof() enum adresini Enum.GetValues() yöntemine parametre olarak geçirmeniz gerekir.
Array logLevels = Enum.GetValues(typeof(LogLevel))
Ve System.Array türünde enum değerlerini döndürür ve ayrıca foreach deyimini kullanarak C# enum isimler.
void loopEnum()
{
   Array logLevels = Enum.GetValues(typeof(LogLevel))
   foreach (LogLevel logLevel in logLevels)
   {
        Console.WriteLine(logLevel.ToString());
   }
}
IEnumerable sonucunu istiyorsanız, Enum.GetValues() yöntemini daha fazla döküm yapabiliriz.
void loopEnum()
{
   var logLevels = Enum.GetValues(typeof(LogLevel)).Cast<LogLevel>();
   foreach (LogLevel logLevel in logLevels)
   {
        Console.WriteLine(logLevel.ToString());
   }
}
C# Enum.GetNames() adlarını dizeler olarak enumerate etmek için enum kullanma 
C# Enum.GetValues() yöntemi enum türlerinden oluşan bir dizi döndürür.
Bu yüzden konsola yazdırmadan önce enum adlarını dizeye dönüştürdük.
C# Enum.GetNames() yöntemini kullanarak enum enum adlarını dizeler olarak erate edebiliriz, böylece bunları dizelere dönüştürmek gerekmez.
.Net 5 ve üstünü kullanıyorsanız, genel C# Enum.GetNames() işlevini kullanabilirsiniz.
void loopEnum()
{
   string[] logLevels = Enum.GetNames<LogLevel>();
   
   foreach (string logLevel in logLevels)
   {
        Console.WriteLine(logLevel);
   }
}
Eski sürümlerde typeof() enum parametresini geçmemiz gerekir.
void loopEnum()
{
   string[] logLevels = Enum.GetNames(typeof(LogLevel));
   foreach (string logLevel in logLevels)
   {
        Console.WriteLine(logLevel);
   }
}
Eğer isimleri string olarak enumerate etmek istiyorsanız C# Enum.GetNames() metodunu kullanabiliriz.
Kullanma Linq 
Enum.GetValues() ve Enum.GetNames() metotları yardımıyla C# enum’u enumerate etmek için Linq forEach metodunu kullanabiliriz.
.Net 5 ve üzerinde aşağıdaki kod parçacığını kullanın.
//Using Enum.GetValues
Enum.GetValues<LogLevel>()
        .ToList()
        .ForEach(loglevel => Console.WriteLine(loglevel.ToString()));
//Using Enum.GetNames
Enum.GetNames<LogLevel>()
        .ToList()
        .ForEach(loglevel => Console.WriteLine(loglevel));        
Eski sürümlerde
//Using Enum.GetValues
Enum.GetValues(typeof(LogLevel))
    .Cast<LogLevel>().ToList()
    .ForEach(loglevel => Console.WriteLine(loglevel.ToString()));
//Using Enum.GetNames
Enum.GetNames(typeof(LogLevel))
    .ToList()
    .ForEach(loglevel => Console.WriteLine(loglevel));    
Özet
Bu eğitimde Enum.GetValues() ve Enum.GetNames() yöntemlerini kullanarak C#’ta enum adresini enumerate etmeyi öğrendik.