Elnevezett állandók számokkal való ábrázolása C-ben#

Befejeződött

Képzelje el, hogy egy projekten dolgozik a megrendelések állapotának nyomon követéséhez, és olyan értékeket kell rendszereznie, mint a "Függőben", a "Szállítás" vagy a "Kézbesítve" egyértelmű és kezelhető módon. Az enumerálások C#-ban való használatával létrehozhatja ezeknek a rendelési állapotoknak a listáját. Az enumerálások használatával egyszerűbben használhatja ezeket az állapotokat a projektben anélkül, hogy újra és újra megkeresi őket.

Az enumerálási forgatókönyv és az enumerálás értékének ismertetése

Az enumerálások ideálisak olyan előre definiált értékek halmazához, amelyek kölcsönösen kizárják vagy kombinálhatók. Például egy enumerálás használatával határozhatja meg az év évszakait:

enum Season
{
    Spring,
    Summer,
    Autumn,
    Winter
}

A kódminta bemutatja, hogyan definiálhat számokat a kölcsönösen kizáró értékek megjelenítéséhez.

Az enumerálások javítják a kód olvashatóságát, ha a numerikus literálokat értelmes nevekre cserélik. Emellett segítenek megakadályozni az érvénytelen értékek hozzárendelését is, mivel csak a megadott állandók engedélyezettek.

Megjegyzés

Az enumerálások bitjelölőkkel is jelölhetik a választási lehetőségek kombinációit, amelyek olyan helyzetekben hasznosak, mint a fájlengedélyek vagy a konfigurációs beállítások.

Enumerálások definiálása

Egy szám C#-ban való definiálásához használja a enum kulcsszót, majd az enum és a tagok nevét. Íme egy példa egy egyszerű számra a hét napjaira vonatkozóan:

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

A kódminta bemutatja, hogyan definiálhat számokat a hét napjaira.

Alapértelmezés szerint az enum alapjául szolgáló típus az int, és az értékek 0-nál kezdődnek, és minden tagnál 1-zel növekszik.

Megjegyzés

Az enumerálások integráltípusokra (például , , intbyte) korlátozódnak, shortés nem jelölhetnek nem integrálható értékeket, például sztringeket vagy decimális értékeket.

Mögöttes típusok és értékek beállítása enumeráláshoz

Megadhat egy másik mögöttes integráltípust egy enumhoz, és egyéni értékeket rendelhet hozzá a tagokhoz. Például:

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

A kódminta bemutatja, hogyan állíthat be egyéni mögöttes típust és értékeket egy enumeráláshoz.

Ez a rugalmasság lehetővé teszi az enumerálási értékek külső rendszerekkel vagy meghatározott követelményekkel való igazítását.

Jótanács

Kerülje a nem integrál típusokat, például char az enumerálás alapjául szolgáló típust, ami megbízhatatlan viselkedéshez vezethet.

Átalakítások végrehajtása számokkal

Az enumerálások támogatják a tagok és a mögöttes integráltípus közötti explicit konverziókat. Például:

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

A kódminta bemutatja, hogyan hajthat végre explicit átalakítást egy integrál értékről enumerálásra.

Az enumerálási értékeket a System.Enum.IsDefined következő módszerrel ellenőrizheti:

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

A kódminta bemutatja, hogyan érvényesíthet egy enumerálási értéket a használatával System.Enum.IsDefined.

Jótanács

Ha az érték érvénytelen, akkor az alapértelmezett érték hozzárendelésével vagy kivétellel kezelhető a biztonságos használat érdekében.

Ajánlott eljárások alkalmazása enumerálások tervezéséhez

Az enumerálás hatékony tervezése:

  • Használjon egyes főneveket egyszerű számokat és többes számú főneveket a jelzőszámhoz.
  • Adjon meg nulla értéket az egyszerű, általában elnevezett Noneszámokat.
  • Kerülje a speciális vagy fenntartott értékek használatát, mivel megzavarhatják a felhasználókat.
  • A bitenkénti műveletek engedélyezéséhez használjon két hatványt a jelölő enumerálásához.

Jótanács

Fontolja meg a bővítménymetelyek hozzáadását az enumeráláshoz további funkciókhoz, például az ellenőrzéshez vagy a formázáshoz.

Enumerálás egyéni értékekkel és metódusokkal

Bár az enumerálások nem tartalmazhatnak közvetlenül metódusokat, bővítménymetelyekkel adhat hozzá funkciókat. Például:

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

A kódminta bemutatja, hogyan használható bővítménymetódus egy enumerálási funkció hozzáadásához.

Jótanács

A bővítménymetelyekkel a definíció módosítása nélkül javíthatja a számokat, így sokoldalúbbá és újrafelhasználhatóbbá teheti őket.

Gyakorlati példa: Enumerálások használata a rendelési állapotok kezeléséhez

Az enumerálásokat gyakran használják az alkalmazások az előre definiált értékek megjelenítésére. Egy e-kereskedelmi alkalmazásban például számmal kezelheti a rendelések állapotát:

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);

Ez a példa bemutatja, hogyan definiálhat egy enumerát a rendelési állapotokhoz, hogyan használhatja azt egy osztályban, és hogyan frissítheti egy rendelés állapotát. Segít a kezdőknek, hogy lássák, hogyan alkalmazhatók az enumerálások egy valós forgatókönyvben.

Enumerálások használatával a numerikus literálokat értelmes nevekre cserélheti, így a kód intuitívabbá és könnyebben karbantarthatóvá válik, miközben explicit konverziókat és érvényesítéseket is lehetővé tesz, hogy biztonságosan használhassa ezeket az állandókat a projektekben.