Iterere over enum-verdier
Gå gjennom alle medlemmene med Enum.GetValues.
Iterere over enum-verdier er en gratis leksjon i C# Academy på CoddyKit. Dette er leksjon 4 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i C# Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i C# Academy inneholder totalt 4 leksjoner.
Vise enum-medlemmer
Noen ganger trenger du alle verdiene i en enum, for eksempel for å bygge en meny. Enum.GetValues gir deg disse verdiene.
using System;
enum Day { Mon, Tue, Wed }
class Program {
static void Main() {
foreach (Day d in Enum.GetValues<Day>())
Console.WriteLine(d);
}
}Generisk GetValues
Den generiske Enum.GetValues<T>() returnerer en sterkt typet tabell som De kan gå gjennom direkte.
using System;
enum Color { Red, Green, Blue }
class Program {
static void Main() {
Color[] all = Enum.GetValues<Color>();
Console.WriteLine(all.Length);
}
}Hente medlemsnavn
Enum.GetNames<T>() returnerer medlemsnavnene som strenger.
using System;
enum Color { Red, Green, Blue }
class Program {
static void Main() {
foreach (string name in Enum.GetNames<Color>())
Console.WriteLine(name);
}
}Navn og verdier sammen
Gå gjennom verdiene og konverter dem til int for å skrive ut både navnet og det underliggende tallet.
using System;
enum Color { Red = 1, Green = 2, Blue = 4 }
class Program {
static void Main() {
foreach (Color c in Enum.GetValues<Color>())
Console.WriteLine(c + " = " + (int)c);
}
}Telle medlemmer
Lengden på verditabellen forteller hvor mange medlemmer enumet har.
using System;
enum Suit { Hearts, Diamonds, Clubs, Spades }
class Program {
static void Main() {
int count = Enum.GetValues<Suit>().Length;
Console.WriteLine(count);
}
}Bygge en meny
Det er perfekt å gå gjennom verdiene når De skal skrive ut en nummerert liste over valg.
using System;
enum Option { Start, Settings, Quit }
class Program {
static void Main() {
int i = 1;
foreach (Option o in Enum.GetValues<Option>())
Console.WriteLine(i++ + ") " + o);
}
}Filtrere under gjennomgang
De kan hoppe over bestemte medlemmer, for eksempel en None-markør, mens De går gjennom verdiene.
using System;
enum State { None, Active, Closed }
class Program {
static void Main() {
foreach (State s in Enum.GetValues<State>())
if (s != State.None)
Console.WriteLine(s);
}
}Gå gjennom med LINQ
Kombiner Enum.GetValues med LINQ for filtrering eller transformasjon.
using System;
using System.Linq;
enum Level { Low = 1, Medium = 2, High = 3 }
class Program {
static void Main() {
var highOnes = Enum.GetValues<Level>().Where(l => (int)l >= 2);
foreach (var l in highOnes) Console.WriteLine(l);
}
}Eldre ikke-generisk form
Før generiske typer ble innført, brukte De Enum.GetValues(typeof(T)), som returnerer en utypet tabell.
using System;
enum Color { Red, Green, Blue }
class Program {
static void Main() {
foreach (Color c in Enum.GetValues(typeof(Color)))
Console.WriteLine(c);
}
}Flags og gjennomgang
For flags-enumereringer lister gjennomgangen hvert enkelt flagg. Kombinerte bekvemmelighetsmedlemmer vises også, så filtrer dem bort ved behov.
using System;
[Flags]
enum Perm { Read = 1, Write = 2, Execute = 4 }
class Program {
static void Main() {
foreach (Perm p in Enum.GetValues<Perm>())
Console.WriteLine(p + " = " + (int)p);
}
}Hvorfor gå gjennom enum
Gjennomgang holder brukergrensesnittet og valideringen synkronisert med enumet: Når De legger til et medlem, tar løkkene det automatisk med.
using System;
enum Size { Small, Medium, Large }
class Program {
static void Main() {
foreach (Size s in Enum.GetValues<Size>())
Console.WriteLine("Available: " + s);
}
}Rask kontroll
Test forståelsen Deres av hvordan enum kan gås gjennom.
Oppsummering
Enum.GetValues<T>() returnerer hvert medlem i en typet tabell, og Enum.GetNames<T>() returnerer navnene deres. De kan gå gjennom verdiene for å skrive ut navn med numeriske verdier, telle medlemmer, bygge menyer eller filtrere med LINQ.
Gjennomgang holder menyer og validering automatisk synkronisert etter hvert som enumet vokser.
Lær deg C# med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 93
- Leksjoner
- 346
Ofte stilte spørsmål
Er leksjonen «Iterere over enum-verdier» gratis?
Ja – hele teksten i «Iterere over enum-verdier» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av C# Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i C# Academy inneholder totalt 4 leksjoner.
Hva lærer jeg i «Iterere over enum-verdier»?
Gå gjennom alle medlemmene med Enum.GetValues. Du øver på C# Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med C# Academy?
Ingen tidligere erfaring er nødvendig. C# Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 4 av 4.
Hvor lang tid tar leksjonen «Iterere over enum-verdier»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne C# Academy-leksjonen?
Ja. Alle C# Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Definere og bruke enum-typer
- Flags-enumtyper og bitvise kombinasjoner
- Konvertering og parsing av enum-typer
- Iterere over enum-verdier