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().