Hogyan enumerate C# enum
Az enumokat széles körben használják a C#
nyelvben.
És 4 módja van a enumerate enum a C#
.
- A
C# Enum.GetValues()
használata a .Net 5 és újabb programokban. - A
C# Enum.GetValues()
használata régebbi .Net verziókban. - A
C# Enum.GetNames()
használata a enuma enum nevek stringként való előállításához. - A használata
Linq
Nézzünk végig egy példát, hogy jobban megértsük.
Először is létrehozunk egy C# enum
public enum LogLevel
{
ERROR,
WARN,
INFO,
DEBUG
}
A enum
különböző típusú naplózási szinteket jelöl.
Most megnézzük a enumkülönböző módozatait C# enum
.
A C# Enum.GetValues()
generikus módszer használata a .Net 5 és újabb verziókban
Ha a .Net
legújabb verzióját használja, azaz a .Net 5
és magasabb verziót, akkor a Enum.GetValues
módszer általános verzióját használhatja a enumerate a módszerhez C# enum
.
void loopEnum()
{
LogLevel[] logLevels = Enum.GetValues<LogLevel>();
foreach (LogLevel logLevel in logLevels)
{
Console.WriteLine(logLevel.ToString());
}
}
A Enum.GetValues
új általános változata a enum értékek tömbjét adja vissza.
Továbbá használhatjuk a for
vagy a foreach
utasításokat, hogy felsoroljuk a C# enum
neveket.
Mivel a tömb tartalmazza a enum
típust tartalmaz, azt a ToString()
módszerrel karakterlánccá kell konvertálnunk.
A C# Enum.GetValues()
használata a régebbi .Net verziókban.
A .Net
régebbi verzióiban nem áll rendelkezésre általános módszer a Enum.GetValues()
módszerhez.
A Enum.GetValues()
metódusnak paraméterként át kell adnia a typeof()
enum címet.
Array logLevels = Enum.GetValues(typeof(LogLevel))
Ez pedig visszaadja a enum típusú System.Array
értékeket, és a továbbiakban a foreach
utasítással végighaladhatunk a típusú értékeken C# enum
neveken.
void loopEnum()
{
Array logLevels = Enum.GetValues(typeof(LogLevel))
foreach (LogLevel logLevel in logLevels)
{
Console.WriteLine(logLevel.ToString());
}
}
Ha a IEnumerable
eredményt szeretnénk, akkor a Enum.GetValues()
metódust tovább tudjuk castolni.
void loopEnum()
{
var logLevels = Enum.GetValues(typeof(LogLevel)).Cast<LogLevel>();
foreach (LogLevel logLevel in logLevels)
{
Console.WriteLine(logLevel.ToString());
}
}
A C# Enum.GetNames()
használata a enumerate enum nevek stringként való átalakításához
C# Enum.GetValues()
a módszer a enum típusok tömbjét adja vissza.
Ezért alakítottuk át a enum neveket sztringgé, mielőtt a konzolra nyomtattuk volna őket.
A C# Enum.GetNames()
metódus segítségével a enumert tudjuk a enum neveket karakterláncokká alakítani, így nem szükséges azokat karakterláncokká konvertálni.
Ha a .Net 5
és a felette lévő neveket használja, használhatja az általános C# Enum.GetNames()
függvényt.
void loopEnum()
{
string[] logLevels = Enum.GetNames<LogLevel>();
foreach (string logLevel in logLevels)
{
Console.WriteLine(logLevel);
}
}
A régebbi verziókban át kell adnunk a typeof()
enum paramétert.
void loopEnum()
{
string[] logLevels = Enum.GetNames(typeof(LogLevel));
foreach (string logLevel in logLevels)
{
Console.WriteLine(logLevel);
}
}
Ha tehát a enumerate neveket karakterláncokként szeretnénk megadni, akkor használhatjuk a C# Enum.GetNames()
módszert.
A használata Linq
A Linq forEach
módszert használhatjuk a enumerate C# enum, a Enum.GetValues()
és a Enum.GetNames()
módszerek segítségével.
A .Net 5
és a fentiekben az alábbi kódrészletet használjuk.
//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));
A régebbi verziókban
//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));
Összefoglaló
Ebben a bemutatóban megtanultuk, hogyan kell enumerate enum C# nyelven a Enum.GetValues()
és a Enum.GetNames()
módszer segítségével.