Brug optællinger til at repræsentere navngivne konstanter i C#

Fuldført

Forestil dig, at du arbejder på et projekt for at spore ordrestatusser, og du skal organisere værdier som "Afventende", "Leveret" eller "Leveret" på en klar og håndterbar måde. Ved hjælp af optællinger i C# kan du oprette en liste over disse ordrestatusser. Brugen af optællinger gør det nemmere at bruge disse statusser i projektet uden at genoprette eller søge efter dem gentagne gange.

Beskriv et scenarie for optællinger og værdien af optællinger

Optællinger er ideelle til at repræsentere et sæt foruddefinerede værdier, der gensidigt udelukker hinanden eller kan kombineres. Du kan f.eks. bruge en optælling til at definere årstiderne i året:

enum Season
{
    Spring,
    Summer,
    Autumn,
    Winter
}

Kodeeksempel viser, hvordan du definerer en optælling, der repræsenterer værdier, der gensidigt udelukker hinanden.

Optællinger forbedrer kodelæsbarheden ved at erstatte numeriske konstanter med meningsfulde navne. De hjælper også med at forhindre, at der tildeles ugyldige værdier, da det kun er de definerede konstanter, der er tilladt.

Seddel

Optællinger kan også repræsentere kombinationer af valg ved hjælp af bitflag, som er nyttige i scenarier som filtilladelser eller konfigurationsindstillinger.

Definer optællinger

Hvis du vil definere en optælling i C#, skal du bruge nøgleordet enum efterfulgt af navnet på optællingen og dens medlemmer. Her er et eksempel på en simpel optælling for ugedagene:

enum DaysOfWeek
{
    Sunday,
    Monday,
    Tuesday,
    Wednesday,
    Thursday,
    Friday,
    Saturday
}

Kodeeksempel viser, hvordan du definerer en optælling for ugedagene.

Den underliggende type af en optælling er intsom standard , og værdierne starter ved 0 og øges med 1 for hvert medlem.

Seddel

Optællinger er begrænset til integraltyper (f.eks. int, byte, short) og kan ikke repræsentere ikke-integralværdier, f.eks. strenge eller decimaler.

Angiv underliggende typer og værdier for optællinger

Du kan angive en anden underliggende integraltype for en optælling og tildele brugerdefinerede værdier til medlemmerne. Det kan f.eks. være:

enum ErrorCode : ushort
{
    None = 0,
    Unknown = 1,
    ConnectionLost = 100,
    OutlierReading = 200
}

Kodeeksempel viser, hvordan du angiver en brugerdefineret underliggende type og værdier for en optælling.

Denne fleksibilitet giver dig mulighed for at justere optællingsværdier i forhold til eksterne systemer eller specifikke krav.

Drikkepenge

Undgå at bruge ikke-integraltyper som char den underliggende type for optællinger, hvilket kan føre til upålidelig funktionsmåde.

Udfør konverteringer med optællinger

Optællinger understøtter eksplicitte konverteringer mellem deres medlemmer og den underliggende integraltype. Det kan f.eks. være:

DaysOfWeek day = (DaysOfWeek)3;
Console.WriteLine(day); // Outputs: Wednesday

Kodeeksempel viser, hvordan du udfører en eksplicit konvertering fra en integralværdi til en optælling.

Du kan validere optællingsværdier ved hjælp af System.Enum.IsDefined metoden :

bool isValid = Enum.IsDefined(typeof(DaysOfWeek), 3);
Console.WriteLine(isValid); // Outputs: True

Kodeeksempel viser, hvordan du validerer en optællingsværdi ved hjælp af System.Enum.IsDefined.

Drikkepenge

Hvis værdien er ugyldig, kan du håndtere den ved at tildele en standardværdi eller udløse en undtagelse for at sikre sikker brug.

Anvend bedste praksis for design af optællinger

Sådan designer du optællinger effektivt:

  • Brug entalsord til simple optællinger og flertalsformige navneord til flag enums.
  • Angiv en værdi på nul for simple optællinger, der typisk kaldes None.
  • Undgå at bruge særlige eller reserverede værdier, da de kan forvirre brugerne.
  • Brug to beføjelser til at markere optællinger for at aktivere bitvise handlinger.

Drikkepenge

Overvej at føje udvidelsesmetoder til optællinger for at få flere funktioner, f.eks. validering eller formatering.

Implementer optællinger med brugerdefinerede værdier og metoder

Selvom optællinger ikke kan indeholde metoder direkte, kan du tilføje funktionalitet ved hjælp af udvidelsesmetoder. Det kan f.eks. være:

public static class DaysOfWeekExtensions
{
    public static bool IsWeekend(this DaysOfWeek day)
    {
        return day == DaysOfWeek.Saturday || day == DaysOfWeek.Sunday;
    }
}

DaysOfWeek today = DaysOfWeek.Saturday;
Console.WriteLine(today.IsWeekend()); // Outputs: True

Kodeeksempel viser, hvordan du bruger en udvidelsesmetode til at føje funktionalitet til en optælling.

Drikkepenge

Brug udvidelsesmetoder til at forbedre optællinger uden at ændre deres definition, hvilket gør dem mere alsidige og genbrugelige.

Praktisk eksempel: Brug af optællinger til at administrere ordrestatusser

Optællinger bruges ofte i programmer til at repræsentere foruddefinerede værdier. I et e-handels-program kan du f.eks. bruge en optælling til at administrere ordrestatusser:

enum OrderStatus
{
    Pending,
    Shipped,
    Delivered,
    Cancelled
}

class Order
{
    public int OrderId { get; set; }
    public OrderStatus Status { get; set; }

    public void UpdateStatus(OrderStatus newStatus)
    {
        Status = newStatus;
        Console.WriteLine($"Order {OrderId} status updated to {Status}");
    }
}

var order = new Order { OrderId = 123, Status = OrderStatus.Pending };
order.UpdateStatus(OrderStatus.Shipped);

I dette eksempel vises, hvordan du definerer en optælling for ordrestatusser, bruger den i en klasse og opdaterer status for en ordre. Det hjælper begyndere med at se, hvordan optællinger kan anvendes i et scenarie i den virkelige verden.

Ved hjælp af optællinger kan du erstatte numeriske konstanter med meningsfulde navne, hvilket gør din kode mere intuitiv og nemmere at vedligeholde, samtidig med at du aktiverer eksplicitte konverteringer og valideringer for at sikre sikker brug af disse konstanter i dine projekter.