Opsommingen zijn een handig gegevenstype waarmee u een lijst met benoemde opties voor een variabele kunt definiëren. Als u bijvoorbeeld elke dag van de week wilt opslaan, kunt u een opsomming gebruiken om de geldige waarden weer te geven.
Opsommingen maken uw code gemakkelijker te lezen en te schrijven door betekenisvolle namen aan te moedigen en de waarden die u kunt gebruiken te beperken. Het is vaak handig om een switch-instructie te gebruiken om de mogelijke waarden van een opsomming te verwerken.
U kunt opsommingen declareren en gebruiken in veel programmeertalen, waaronder C#.
Hoe een Enum in C # te declareren
In C# decalreer je meestal opsommingen op naamruimteniveau. In een C#-consoletoepassing kunt u bijvoorbeeld uw opsommingen declareren als klasse-eigenschappen. Hierin kunt u een voorbeeld bekijken GitHub-opslagplaats.
klasProgramma
{
opsomming weekdag {
Maandag,
Dinsdag,
Woensdag,
Donderdag,
Vrijdag,
Zaterdag,
Zondag
}
statischleegteVoornaamst(snaar[] betoogt)
{
}
}
Wanneer u een opsomming declareert, krijgt elke optie een geheel getal om de index weer te geven. Standaard heeft de eerste waarde in de opsomming een indexwaarde van 0. Om dit te wijzigen, kunt u uw eigen index specificeren voor het eerste element wanneer u de enum declareert:
opsomming weekdag {
Maandag = 1,
Dinsdag,
Woensdag,
Donderdag,
Vrijdag,
Zaterdag,
Zondag
}
In dit geval de index van het eerste element Maandag begint om 1. De index van het volgende element Dinsdag zal zijn 2, enzovoort.
Toegang krijgen tot een Enum-waarde in C#
Er zijn veel verschillende manieren waarop u toegang kunt krijgen tot de waarden die zijn opgeslagen in opsommingen. De waarde die voor elke optie in de opsomming wordt geretourneerd, is de index. Voor dit voorbeeld is de waarde van Weekdag. Vrijdag is 5.
Een manier om de naam van de enum op te halen, is door de Opsommingen. KrijgNaam() functie. Dit krijgt de naam van de optie bij index 5:
snaar vrijdag = Enum. GetNaam(soort van(weekdag), weekdag. Vrijdag);
Troosten. Schrijf lijn("Godzijdank is het" + vrijdag + "!");
// Output = God zij dank is het vrijdag!
U kunt ook toegang krijgen tot een waarde met behulp van de index. In dit geval wordt de waarde bij index 2 in de opsomming van weekdagen (dat is dinsdag) opgeslagen in de variabele:
Weekdag dinsdag = (weekdag)2;
Troosten. Schrijf lijn("Vandaag is " + dinsdag);
// Uitvoer = Vandaag is het dinsdag
Wanneer u een opsomming als argument doorgeeft aan Troosten. Schrijf lijn(), de naarString() methode voor de opsomming wordt automatisch uitgevoerd. Dit betekent dat in plaats van de werkelijke numerieke waarde van de enum af te drukken, dat is 5, het zal de tekenreekswaarde afdrukken, Vrijdag.
Troosten. WriteLine (weekdag. donderdag + " is het nieuwe " + Weekdag. Vrijdag);
// Output = donderdag is de nieuwe vrijdag
Je kan ook converteer of parseer het gegevenstype in een geheel getal als een andere manier om de index van een optie op te slaan:
int maandagIndex = (int)Weekdag. Maandag;
Troosten. WriteLine (maandagIndex);
// Uitvoer = 1
Enums vergelijken in C #
In C# kunt u opsommingen vergelijken met behulp van de vergelijkingsoperatoren (==, !=, , <=, >=). Dit zal de numerieke waarde van de opties vergelijken.
Weekdag dag1 = Weekdag. Maandag;
Weekdag dag2 = Weekdag. Dinsdag;
als (dag1 == dag2)
{
Troosten. Schrijf lijn("De dagen zijn hetzelfde.");
}
anders
{
Troosten. Schrijf lijn("De dagen zijn anders.");
}
In dit voorbeeld de waarde van Weekdag. Maandag is 1 en de waarde van Weekdag. Dinsdag is 2, dus de 1 == 2 vergelijking zal mislukken.
Een andere manier om opsommingen te vergelijken is de Is gelijk aan() methode:
als (dag1.Gelijk aan (dag2))
{
Troosten. Schrijf lijn("De dagen zijn hetzelfde.");
}
anders
{
Troosten. Schrijf lijn("De dagen zijn anders.");
}
Je kan ook gebruik een C# switch statement om een waarde te vergelijken met elke optie in een opsomming. In dit voorbeeld valt de code in de woensdag-case:
Weekdag valueToCompare = Weekdag. Woensdag;
schakelaar (waardeToCompare)
{
geval Weekdag. Maandag:
Troosten. Schrijf lijn("Ik heb koffie nodig.");
pauze;
geval Weekdag. Dinsdag:
Troosten. Schrijf lijn("Ik heb koffie nodig.");
pauze;
geval Weekdag. Woensdag:
Troosten. Schrijf lijn("Ik heb koffie nodig.");
pauze;
geval Weekdag. Donderdag:
Troosten. Schrijf lijn("Donderdag is de nieuwe vrijdag!");
pauze;
geval Weekdag. Vrijdag:
Troosten. Schrijf lijn("Gelukkig is het vrijdag!");
pauze;
geval Weekdag. Zaterdag:
Troosten. Schrijf lijn("Mijn favoriete dag!");
pauze;
geval Weekdag. Zondag:
Troosten. Schrijf lijn("Mijn andere favoriete dag!");
pauze;
standaard:
Troosten. Schrijf lijn("Ongeldige dag van de week.");
pauze;
}
Hoe te itereren over opsommingen in C #
U kunt opsommingen in C# herhalen met behulp van de Opsomming. Waarden ophalen() methode, die een array retourneert van alle waarden in de enum. Dit codefragment wordt elke dag van de week afgedrukt, inclusief maandag, dinsdag, enzovoort:
voor elk (Doordeweekse dag in Opsomming. Waarden ophalen(soort van(Weekdag)))
{
Troosten. Schrijf lijn((int)dag); // Om de index af te drukken
Troosten. WriteLine (dag); // Om de tekstwaarde af te drukken
}
U kunt ook opsommingswaarden herhalen met behulp van de Opsomming. GetNames() methode. Het retourneert een lijst met tekenreekswaarden om de namen voor de enum-opties weer te geven:
voor elk (snaar naam in Opsomming. GetNames(soort van(Weekdag)))
{
int indexeren = (int)(weekdag) Enum. Ontleed(soort van(weekdag), naam);
Troosten. Schrijfregel (index); // Om de index af te drukken
Troosten. WriteLine (naam); // Om de tekstwaarde af te drukken
}
Enums gebruiken in C#
U kunt opsommingen in uw code gebruiken om deze leesbaarder en minder vatbaar voor bugs te maken. Opsommingen kunnen ook erg handig zijn in combinatie met andere structuren, zoals woordenboeken.