Kuidas enumerate C# enum
Enumid on C# keeles laialdaselt kasutusel.
Ja on 4 viisi, kuidas enumerate enum C# .
- Kasutades
C# Enum.GetValues()in .Net 5 & above. - Kasutades
C# Enum.GetValues()vanemates .Net versioonides. - Kasutades
C# Enum.GetNames()enum erate enum nimed stringidena. - Kasutades
Linq
Käime selle täpsemaks mõistmiseks läbi ühe näite.
Kõigepealt loome C# enum
public enum LogLevel
{
ERROR,
WARN,
INFO,
DEBUG
}
The enum tähistab erinevaid logimistasemeid.
Nüüd näeme erinevaid viise, kuidas enumerateerida C# enum.
C# Enum.GetValues() Generic meetodi kasutamine .Net 5 ja kõrgemates versioonides
Kui te kasutate .Net uusimat versiooni, st .Net 5 ja uuemat versiooni, saate kasutada Enum.GetValues meetodi enumerate generic versiooni C# enum.
void loopEnum()
{
LogLevel[] logLevels = Enum.GetValues<LogLevel>();
foreach (LogLevel logLevel in logLevels)
{
Console.WriteLine(logLevel.ToString());
}
}
Uus üldine versioon Enum.GetValues tagastab enum väärtuste massiivi.
Ja edasi saame kasutada for või foreach avaldusi, et loetleda C# enum nimed.
Kuna massiiv sisaldab enum tüübi, peame selle teisendama stringiks, kasutades meetodit ToString().
Kasutades C# Enum.GetValues() vanemates .Net versioonides.
Vanemates versioonides .Net ei ole Enum.GetValues() meetodi jaoks saadaval üldist meetodit.
Sa pead andma typeof() enum parameetrina Enum.GetValues() meetodile üle.
Array logLevels = Enum.GetValues(typeof(LogLevel))
Ja see tagastab enum tüüpi System.Array väärtused ja edasi saame kasutada foreach avaldust, et loopida läbi C# enum nimede läbi.
void loopEnum()
{
Array logLevels = Enum.GetValues(typeof(LogLevel))
foreach (LogLevel logLevel in logLevels)
{
Console.WriteLine(logLevel.ToString());
}
}
Kui soovite IEnumerable tulemust, saame edasi valada Enum.GetValues() meetodi.
void loopEnum()
{
var logLevels = Enum.GetValues(typeof(LogLevel)).Cast<LogLevel>();
foreach (LogLevel logLevel in logLevels)
{
Console.WriteLine(logLevel.ToString());
}
}
Kasutades C# Enum.GetNames(), et enumerate enum nimed stringidena
C# Enum.GetValues() meetod tagastab enum tüüpide massiivi.
Seepärast teisendasime enum nimed stringiks enne nende väljastamist konsooli.
Kasutades C# Enum.GetNames() meetodit saame enumerate enum nimed stringideks, nii et neid ei ole vaja teisendada stringideks.
Kui te kasutate .Net 5 ja rohkem, võite kasutada üldist C# Enum.GetNames() funktsiooni.
void loopEnum()
{
string[] logLevels = Enum.GetNames<LogLevel>();
foreach (string logLevel in logLevels)
{
Console.WriteLine(logLevel);
}
}
Vanemates versioonides tuleb edastada typeof() enum parameeter.
void loopEnum()
{
string[] logLevels = Enum.GetNames(typeof(LogLevel));
foreach (string logLevel in logLevels)
{
Console.WriteLine(logLevel);
}
}
Nii et kui soovite en enumerate nimed stringidena saame kasutada C# Enum.GetNames() meetodit.
Kasutades Linq
Linq forEach meetodit saame kasutada enumerate C# enum, Enum.GetValues() ja Enum.GetNames() meetodite abil.
In .Net 5 ja eespool kasutada alljärgnevat koodilõiku.
//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));
Vanemates versioonides
//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));
Kokkuvõte
Selles õpetuses õppisime enumerate enum C# keeles, kasutades Enum.GetValues() ja Enum.GetNames() meetodit.