Kā enumerate C# enum
Enumus plaši izmanto C#
valodā.
Un ir 4 veidi, kā enumerate enum C#
.
C# Enum.GetValues()
izmantošana .Net 5 un jaunākās versijās.- Izmantojot
C# Enum.GetValues()
vecākās .Net versijās. - Izmantojot
C# Enum.GetNames()
, lai enumerate enum vārdus kā virknes. - Izmantojot
Linq
Izskatīsim piemēru, lai to labāk izprastu.
Vispirms izveidosim C# enum
public enum LogLevel
{
ERROR,
WARN,
INFO,
DEBUG
}
Portāls enum
apzīmē dažādus žurnālu veidošanas līmeņus.
Tagad mēs aplūkosim dažādus veidus, kā enumerate C# enum
.
Izmantojot C# Enum.GetValues()
Generic metodi .Net 5 un jaunākās versijās
Ja izmantojat jaunāko .Net
versiju, t. i., .Net 5
un jaunāku versiju, varat izmantot vispārīgo versiju Enum.GetValues
metodei, lai enumeratētu C# enum
.
void loopEnum()
{
LogLevel[] logLevels = Enum.GetValues<LogLevel>();
foreach (LogLevel logLevel in logLevels)
{
Console.WriteLine(logLevel.ToString());
}
}
Jaunā vispārīgā Enum.GetValues
versija atgriež enum vērtību masīvu.
Un tālāk mēs varam izmantot for
vai foreach
paziņojumus, lai uzskaitītu C# enum
vārdus.
Tā kā masīvs satur enum
tips, mums tas jāpārvērš virknē, izmantojot ToString()
metodi.
Izmantojot C# Enum.GetValues()
vecākās .Net versijās.
Vecākajās .Net
versijās Enum.GetValues()
metodei nav pieejama vispārīga metode.
Jums ir jānodod typeof()
enum kā parametrs Enum.GetValues()
metodei.
Array logLevels = Enum.GetValues(typeof(LogLevel))
Un tā atgriež enum tipa System.Array
vērtības, un tālāk mēs varam izmantot foreach
izteikumu, lai veiktu cilpu caur C# enum
vārdus.
void loopEnum()
{
Array logLevels = Enum.GetValues(typeof(LogLevel))
foreach (LogLevel logLevel in logLevels)
{
Console.WriteLine(logLevel.ToString());
}
}
Ja vēlaties IEnumerable
rezultātu, mēs varam tālāk izmantot Enum.GetValues()
metodi.
void loopEnum()
{
var logLevels = Enum.GetValues(typeof(LogLevel)).Cast<LogLevel>();
foreach (LogLevel logLevel in logLevels)
{
Console.WriteLine(logLevel.ToString());
}
}
Izmantojot C# Enum.GetNames()
, lai enumeratētu enum vārdus kā virknes
C# Enum.GetValues()
metode atgriež enum tipu masīvu.
Tāpēc mēs konvertējām enum vārdus virknē, pirms tos izdrukāt konsoles ekrānā.
Izmantojot C# Enum.GetNames()
metodi, mēs varam enumerēt enum vārdus kā virknes, lai tos nevajadzētu konvertēt virknēs.
Ja jūs izmantojat .Net 5
un augstāk, jūs varat izmantot vispārīgo C# Enum.GetNames()
funkciju.
void loopEnum()
{
string[] logLevels = Enum.GetNames<LogLevel>();
foreach (string logLevel in logLevels)
{
Console.WriteLine(logLevel);
}
}
Vecākajās versijās mums ir jāievada typeof()
enum parametrs.
void loopEnum()
{
string[] logLevels = Enum.GetNames(typeof(LogLevel));
foreach (string logLevel in logLevels)
{
Console.WriteLine(logLevel);
}
}
Tātad, ja jūs vēlaties enumerate vārdus kā virknes, mēs varam izmantot C# Enum.GetNames()
metodi.
Izmantojot Linq
Mēs varam izmantot Linq forEach
metodi, lai enumeratētu C# enum, izmantojot Enum.GetValues()
un Enum.GetNames()
metodes.
.Net 5
un augstāk izmanto zemāk redzamo koda fragmentu.
//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));
Vecākās versijās
//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));
Kopsavilkums
Šajā pamācībā mēs iemācījāmies enumerate enum C# valodā, izmantojot Enum.GetValues()
un Enum.GetNames()
metodi.