Cara enumerate C# enum
Enum digunakan secara luas dalam bahasa C#
.
Dan ada 4 cara untuk enumerate enum di C#
.
- Menggunakan
C# Enum.GetValues()
di .Net 5 ke atas. - Menggunakan
C# Enum.GetValues()
di versi .Net yang lebih lama. - Menggunakan
C# Enum.GetNames()
untuk enummembuat nama enum sebagai string. - 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()
.