Arbeide med Enums i C#
Å telle gjennom en enum i C# kan være litt forvirrende for nybegynnere. Dette fører ofte til kompileringstidsfeil hvis det ikke gjøres riktig. Å forstå den riktige måten å iterere gjennom enum-verdier er avgjørende for effektiv koding.
I denne artikkelen vil vi diskutere en enkel tilnærming til å telle opp en enum i C#, ved å bruke et eksempel som fremhever vanlige fallgruver og den riktige metoden. Til slutt vil du være i stand til å telle opp alle enumer med letthet.
Kommando | Beskrivelse |
---|---|
Enum.GetValues(typeof(Suit)) | Henter en matrise med verdiene til konstantene i en spesifisert oppregning. |
Enum.GetValues() | Returnerer en matrise med alle enum-verdier. |
Cast<T>() | Konverterer elementene i en IEnumerable til den angitte typen. |
Console.WriteLine() | Skriver de spesifiserte dataene, etterfulgt av gjeldende linjeterminator, til standard utdatastrøm. |
foreach | Itererer gjennom en samling eller array, og utfører en blokk med kode for hvert element. |
public enum | Definerer en opptelling, en distinkt type som består av et sett med navngitte konstanter kalt opptellingslisten. |
Detaljert forklaring av Enum Iteration
Skriptene som følger med demonstrerer hvordan man kan telle riktig gjennom en enum i C#. Det første skriptet bruker Enum.GetValues(typeof(Suit)) for å hente en rekke med alle verdier i Suit enum. Denne matrisen itereres deretter over med en foreach loop, slik at programmet kan kjøre DoSomething(suit) metode for hver oppregningsverdi. Denne tilnærmingen er enkel og utnytter innebygde C#-metoder for å håndtere oppregninger effektivt.
Det andre skriptet oppnår samme mål, men bruker LINQ for ekstra fleksibilitet og lesbarhet. Ved å ringe Enum.GetValues(typeof(Suit)).Cast<Suit>(), er enum-verdiene kastet til Suit type, noe som muliggjør mer avanserte LINQ-operasjoner om nødvendig. De foreach loop behandler deretter hver farge på en lignende måte, og påkaller DoSomething(suit) metode for hver oppregningsverdi. Begge skriptene er avgjørende for å iterere over enums og unngå vanlige fallgruver som å behandle enum-typen som en variabel.
Oppregning av enum-verdier i C#
Bruke C# for å iterere gjennom Enum
using System;
using System.Linq;
public enum Suit
{
Spades,
Hearts,
Clubs,
Diamonds
}
public class Program
{
public static void Main()
{
foreach (Suit suit in Enum.GetValues(typeof(Suit)))
{
DoSomething(suit);
}
}
public static void DoSomething(Suit suit)
{
Console.WriteLine(suit);
}
}
Riktig oppregning av enums i C#
Bruker LINQ for Enum Iteration
using System;
using System.Linq;
public enum Suit
{
Spades,
Hearts,
Clubs,
Diamonds
}
public class Program
{
public static void Main()
{
var suits = Enum.GetValues(typeof(Suit)).Cast<Suit>();
foreach (var suit in suits)
{
DoSomething(suit);
}
}
public static void DoSomething(Suit suit)
{
Console.WriteLine(suit);
}
}
Forstå Enum-metoder og -egenskaper
I tillegg til å iterere over enums, er det viktig å forstå andre nyttige metoder og egenskaper som enums i C# gir. En slik metode er Enum.GetName(), som returnerer navnet på konstanten i den angitte opptellingen som har den angitte verdien. Dette kan være spesielt nyttig for å vise brukervennlige navn for enum-verdier.
En annen nyttig egenskap er Enum.IsDefined(), som sjekker om en spesifisert verdi eller navn finnes i en bestemt oppregning. Denne metoden er nyttig for valideringsformål for å sikre at en gitt verdi faktisk er en del av det definerte enum-settet. Å forstå disse metodene lar utviklere utnytte den fulle kraften til enums i applikasjonene sine, og sikre robust og lesbar kode.
Ofte stilte spørsmål om å telle opp tall i C#
- Hvordan får jeg alle navnene på en enum?
- Bruk Enum.GetNames(typeof(Suit)) for å hente en rekke av navnene på konstantene i enum.
- Kan jeg konvertere en streng til en enum-verdi?
- Ja, bruk Enum.Parse(typeof(Suit), "Spades") for å konvertere en streng til den tilsvarende enum-verdien.
- Hvordan kan jeg sjekke om det finnes en verdi i en enum?
- Bruk Enum.IsDefined(typeof(Suit), value) for å sjekke om det finnes en spesifikk verdi i enumen.
- Kan enums brukes med bitvise operasjoner?
- Ja, ved å definere enum med 1. 3 attributt, kan enums brukes for bitvise operasjoner.
- Hvordan får jeg den underliggende typen enum?
- Bruk Enum.GetUnderlyingType(typeof(Suit)) for å få den underliggende typen enum.
- Hva er standardverdien til en enum?
- Standardverdien til en enum er verdien som er assosiert med null, som vanligvis er den første verdien oppført i enum.
- Kan jeg iterere gjennom enum-navn i stedet for verdier?
- Ja, du kan bruke foreach (string name in Enum.GetNames(typeof(Suit))) å iterere gjennom navnene.
- Hvordan kan jeg sammenligne to enum-verdier?
- Enum-verdier kan sammenlignes ved å bruke standard sammenligningsoperatorer som ==, !=, <, og >.
Viktige takeaways på Enum Enumeration
Avslutningsvis krever oppregning av en enum i C# å forstå de riktige metodene og egenskapene som er gitt av språket. Ved hjelp av Enum.GetValues gir enkel iterasjon, mens LINQ tilbyr ekstra fleksibilitet. Å sikre riktig bruk av disse metodene forhindrer vanlige fallgruver, for eksempel å behandle enum-typen som en variabel. I tillegg utnytter andre enummetoder som Enum.GetName og Enum.IsDefined forbedrer robustheten til koden din. Å mestre disse teknikkene er avgjørende for effektiv C#-programmering, slik at du kan håndtere oppregninger effektivt og nøyaktig i applikasjonene dine.