Cara enumerate C# enum

Enum digunakan secara luas dalam bahasa C#.

Dan ada 4 cara untuk enumerate enum di C#.

  1. Menggunakan C# Enum.GetValues() di .Net 5 ke atas.
  2. Menggunakan C# Enum.GetValues() di versi .Net yang lebih lama.
  3. Menggunakan C# Enum.GetNames() untuk enummembuat nama enum sebagai string.
  4. Menggunakan Linq

Mari kita lihat sebuah contoh untuk memahaminya lebih lanjut.

Pertama, kita akan membuat sebuah program C# enum

public enum LogLevel
{
   ERROR, 
   WARN, 
   INFO, 
   DEBUG
}

Tingkat penebangan enum mewakili berbagai jenis tingkat penebangan.

Sekarang kita akan melihat berbagai cara untuk enumerate C# enum.

Menggunakan C# Enum.GetValues() Metode umum di .Net 5 & di atas

Jika Anda menggunakan versi terbaru dari .Net, yaitu, .Net 5 dan di atasnya, Anda dapat menggunakan versi generik untuk metode Enum.GetValues untuk enumerate file C# enum.

void loopEnum()
{
   LogLevel[] logLevels = Enum.GetValues<LogLevel>();
   
   foreach (LogLevel logLevel in logLevels)
   {
        Console.WriteLine(logLevel.ToString());
   }
}

Versi generik baru dari Enum.GetValues mengembalikan larik nilai enum.

Dan selanjutnya kita bisa menggunakan pernyataan for atau foreach untuk mendaftarkan C# enum nama.

Karena larik tersebut berisi tipe enum kita perlu mengonversinya menjadi string menggunakan metode ToString().

Menggunakan C# Enum.GetValues() di versi .Net yang lebih lama.

Pada versi lama .Net tidak ada metode generik yang tersedia untuk metode Enum.GetValues().

Anda harus mengoper typeof() enum sebagai parameter ke metode Enum.GetValues().

Array logLevels = Enum.GetValues(typeof(LogLevel))

Dan mengembalikan nilai enum dengan tipe System.Array dan selanjutnya kita dapat menggunakan pernyataan foreach untuk mengulang C# enum nama.

void loopEnum()
{
   Array logLevels = Enum.GetValues(typeof(LogLevel))
   foreach (LogLevel logLevel in logLevels)
   {
        Console.WriteLine(logLevel.ToString());
   }
}

Jika Anda menginginkan hasil IEnumerable, kita dapat menggunakan metode Enum.GetValues().

void loopEnum()
{
   var logLevels = Enum.GetValues(typeof(LogLevel)).Cast<LogLevel>();
   foreach (LogLevel logLevel in logLevels)
   {
        Console.WriteLine(logLevel.ToString());
   }
}

Menggunakan C# Enum.GetNames() untuk enummembuat nama enum sebagai string

C# Enum.GetValues() metode mengembalikan array dari tipe enum.

Itulah mengapa kami mengubah nama enum menjadi string sebelum mencetaknya di konsol.

Dengan menggunakan metode C# Enum.GetNames() kita dapat enummembuat nama enum sebagai string, sehingga tidak perlu mengonversinya menjadi string.

Jika Anda menggunakan .Net 5 & di atasnya, Anda dapat menggunakan fungsi generik C# Enum.GetNames().

void loopEnum()
{
   string[] logLevels = Enum.GetNames<LogLevel>();
   
   foreach (string logLevel in logLevels)
   {
        Console.WriteLine(logLevel);
   }
}

Pada versi yang lebih lama, kita perlu memasukkan parameter typeof() enum .

void loopEnum()
{
   string[] logLevels = Enum.GetNames(typeof(LogLevel));
   foreach (string logLevel in logLevels)
   {
        Console.WriteLine(logLevel);
   }
}

Jadi, jika Anda ingin membuat enumnama sebagai string, kita dapat menggunakan metode C# Enum.GetNames().

Menggunakan Linq

Kita dapat menggunakan metode Linq forEach untuk enummembuat C# enum, dengan bantuan metode Enum.GetValues() dan Enum.GetNames().

Pada .Net 5 dan di atasnya gunakan potongan kode di bawah ini.

//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));        

Di versi yang lebih lama

//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));    

Ringkasan

Dalam tutorial ini kita belajar untuk enummembuat enum dalam bahasa C# menggunakan metode Enum.GetValues() dan Enum.GetNames().