Enumu uzskaitīšana C# — soli pa solim

Enumu uzskaitīšana C# — soli pa solim
Enumu uzskaitīšana C# — soli pa solim

Izpratne par enum iterāciju C#

C# valodā enums ir spēcīgs līdzeklis, kas ļauj definēt nosaukto integrālo konstantu kopu. Tomēr uzskaitīšana, izmantojot enumu, var būt sarežģīta tiem, kas sākuši lietot valodu. Izplatīta problēma rodas, mēģinot atkārtot enum, izmantojot foreach cilpu, izraisot kompilēšanas laika kļūdas.

Šajā rakstā mēs izpētīsim pareizo veidu, kā uzskaitīt enum C#. Mēs apskatīsim, kāpēc kopējā pieeja neizdodas, un nodrošināsim funkcionējošu risinājumu. Līdz šīs rokasgrāmatas beigām jums būs skaidra izpratne par to, kā atkārtot visas enum vērtības C# valodā.

Pavēli Apraksts
Enum.GetValues Izgūst konstantu vērtību masīvu noteiktā enum.
typeof Izmanto, lai iegūtu noteiktas klases vai enum veidu izpildes laikā.
Cast<T>() Pārvērš IEnumerable elementus norādītajā veidā.
Console.WriteLine Ieraksta norādītos datus, kam seko pašreizējās līnijas beigu punkts, standarta izvades straumē.
foreach Atkārtojas, izmantojot kolekciju vai masīvu.

Enum vērtību uzskaitīšana: detalizēts skaidrojums

C# valodā, enum tipi tiek izmantoti, lai definētu nosaukto konstantu kopu, nodrošinot labāk lasāmu un uzturējamu veidu, kā strādāt ar saistīto vērtību kopām. Kad jums ir nepieciešams atkārtot visas an vērtības enum, varat izmantot Enum.GetValues metodi, kas atgriež masīvu enum vērtības. Norādītajā piemērā Enum.GetValues metode tiek izmantota a foreach cilpa, lai atkārtotu katru Suit vērtību. The typeof operators tiek izmantots, lai iegūtu veidu enum, kas tiek nodots kā arguments Enum.GetValues. Šī metode izgūst visu vērtību masīvu Suit enum, ļaujot foreach cilpu, lai tās atkārtotu.

Iekš EnumerateAllSuitsDemoMethod, foreach cilpa atkārtojas katrā Suit vērtību un DoSomething metode tiek izsaukta ar strāvu Suit vērtību. The DoSomething metode vienkārši izdrukā Suit vērtību konsolei, izmantojot Console.WriteLine metodi. Šajā piemērā ir parādīts, kā efektīvi veikt atkārtojumu enum C# un veiciet darbību katrai vērtībai. Izmantojot Enum.GetValues ir ierasta prakse uzskaitīt enum vērtības, un tas nodrošina, ka kods paliek tīrs un efektīvs.

LINQ izmantošana uzlabotai Enum iterācijai

Vēl viena pieeja iterācijai caur an enum C # ietver LINQ izmantošanu. Otrajā piemērā Cast<T> LINQ metode tiek izmantota, lai pārveidotu atgriezto masīvu Enum.GetValues stingri drukātā veidā IEnumerable<T>. Tas ļauj izmantot LINQ metodes turpmākai apstrādei. Šajā piemērā Cast<T> masīva atrašanai tiek izmantota metode Suit vērtības uz IEnumerable<Suit>, ļaujot tos atkārtot, izmantojot a foreach cilpa.

The EnumerateAllSuitsUsingLinq metode demonstrē šo pieeju, kur Enum.GetValues metode tiek izmantota, lai izgūtu Suit vērtības un Cast<T> tiek izmantots, lai tos nodotu Suit. The foreach cilpa, tad atkārtojas katrā Suit vērtību, zvanot uz DoSomething metode katram. Šī metode, tāpat kā iepriekšējais piemērs, izdrukā Suit vērtību konsolei. Izmantojot LINQ, kods var kļūt lasāmāks un izteiksmīgāks, īpaši, ja tas tiek apvienots ar citām LINQ operācijām, lai filtrētu, kārtotu vai pārveidotu. enum vērtības.

Iterēšana caur Enum C#

Izmantojot C# un .NET Framework

using System;
using System.Collections.Generic;

public enum Suit
{
    Spades,
    Hearts,
    Clubs,
    Diamonds
}

public class Program
{
    public static void Main()
    {
        EnumerateAllSuitsDemoMethod();
    }

    public static void EnumerateAllSuitsDemoMethod()
    {
        foreach (Suit suit in Enum.GetValues(typeof(Suit)))
        {
            DoSomething(suit);
        }
    }

    public static void DoSomething(Suit suit)
    {
        Console.WriteLine(suit);
    }
}

Enumu uzskaitīšana, izmantojot LINQ C#

LINQ izmantošana Enum iterācijai C#

using System;
using System.Collections.Generic;
using System.Linq;

public enum Suit
{
    Spades,
    Hearts,
    Clubs,
    Diamonds
}

public class Program
{
    public static void Main()
    {
        EnumerateAllSuitsUsingLinq();
    }

    public static void EnumerateAllSuitsUsingLinq()
    {
        var suits = Enum.GetValues(typeof(Suit)).Cast<Suit>();
        foreach (Suit suit in suits)
        {
            DoSomething(suit);
        }
    }

    public static void DoSomething(Suit suit)
    {
        Console.WriteLine(suit);
    }
}

Iterēšana caur Enum C#

Izmantojot C# un .NET Framework

using System;
using System.Collections.Generic;

public enum Suit
{
    Spades,
    Hearts,
    Clubs,
    Diamonds
}

public class Program
{
    public static void Main()
    {
        EnumerateAllSuitsDemoMethod();
    }

    public static void EnumerateAllSuitsDemoMethod()
    {
        foreach (Suit suit in Enum.GetValues(typeof(Suit)))
        {
            DoSomething(suit);
        }
    }

    public static void DoSomething(Suit suit)
    {
        Console.WriteLine(suit);
    }
}

Enumu uzskaitīšana, izmantojot LINQ C#

LINQ izmantošana Enum iterācijai C#

using System;
using System.Collections.Generic;
using System.Linq;

public enum Suit
{
    Spades,
    Hearts,
    Clubs,
    Diamonds
}

public class Program
{
    public static void Main()
    {
        EnumerateAllSuitsUsingLinq();
    }

    public static void EnumerateAllSuitsUsingLinq()
    {
        var suits = Enum.GetValues(typeof(Suit)).Cast<Suit>();
        foreach (Suit suit in suits)
        {
            DoSomething(suit);
        }
    }

    public static void DoSomething(Suit suit)
    {
        Console.WriteLine(suit);
    }
}

Uzlabotas metodes enumu uzskaitīšanai C#

Vēl viens uzlabots paņēmiens darbam ar enums C# ir atribūtu izmantošana metadatu pievienošanai enum vērtībām. Tas var būt īpaši noderīgi, ja jums ir jāsaista papildu informācija ar katru uzskaites dalībnieku. Piemēram, iespējams, vēlēsities katrai uzskaites vērtībai pievienot aprakstu. The System.ComponentModel nosaukumvieta nodrošina a DescriptionAttribute kas ļauj to izdarīt. Piemērojot DescriptionAttribute katrai uzskaites vērtībai varat saglabāt cilvēkiem lasāmus aprakstus vai citus metadatus kopā ar saviem uzskaites dalībniekiem. Šī pieeja ir noderīga, parādot uzskaites vērtības lietotāja interfeisā vai reģistrējot tās ar aprakstošāku informāciju.

Lai izgūtu aprakstus, varat izmantot refleksiju. Izpētot katras enum vērtības atribūtus, varat iegūt un izmantot metadatus, kas tiek glabāti DescriptionAttribute. Tas ietver tādu metožu izmantošanu kā GetCustomAttribute un FieldInfo lai piekļūtu atribūtu datiem. Šis paņēmiens uzlabo enumu elastību un lietojamību, padarot tos jaudīgākus un daudzpusīgākus jūsu lietojumprogrammās. Lai gan tas nedaudz sarežģī, ar uzskaites vērtībām saistītu bagātīgu metadatu priekšrocības var būt ievērojamas, jo īpaši lielās vai sarežģītās sistēmās, kur enumi tiek plaši izmantoti.

Bieži uzdotie jautājumi par Enumu uzskaitīšanu C#

  1. Kā pievienot metadatus uzskaites vērtībām?
  2. Jūs varat izmantot DescriptionAttribute no System.ComponentModel nosaukumvieta, lai pievienotu metadatus enum vērtībām.
  3. Vai varat kārtot uzskaites vērtības?
  4. Jā, jūs varat kārtot uzskaites vērtības, izmantojot LINQ metodes, piemēram OrderBy.
  5. Kā enumu pārvērst sarakstā?
  6. Varat pārvērst sarakstu sarakstā, izmantojot Enum.GetValues un LINQ's ToList metodi.
  7. Vai varat parsēt virkni uz enumu?
  8. Jā, jūs varat parsēt virkni uz enum, izmantojot Enum.Parse metodi.
  9. Kā pārbaudīt, vai vērtība ir definēta sarakstā?
  10. Varat pārbaudīt, vai vērtība ir definēta sarakstā, izmantojot Enum.IsDefined metodi.
  11. Vai jūs varat izmantot enumus ar karogiem?
  12. Jā, jūs varat izmantot Flags atribūts, lai izveidotu enum vērtību bitu kombinācijas.
  13. Kā jūs atkārtojat enums ar karogiem?
  14. Lai atkārtotu enums ar karodziņiem, izmantojiet bitu darbības kombinācijā ar Enum.GetValues.
  15. Vai enums var izmantot metodes C#?
  16. Pašiem enumiem nevar būt metodes, taču jūs varat izveidot enumu paplašināšanas metodes.
  17. Kā lietotāja interfeisā parādīt enum aprakstu?
  18. Varat parādīt enum aprakstu lietotāja saskarnē, izgūstot DescriptionAttribute vērtība, izmantojot refleksiju.

Noslēgums: Enum iterācijas apguve C#

Izpratne par enum uzskaitīšanu C# ir būtiska, lai efektīvi apstrādātu nosaukto konstantu kopas. Izmantojot tādas metodes kā Enum.GetValues un LINQ, varat efektīvi atkārtot enum vērtības un veikt nepieciešamās darbības. Turklāt metadatu iekļaušana atribūtos var ievērojami uzlabot jūsu koda elastību un lasāmību. Šīs metodes nodrošina stabilus risinājumus bieži sastopamām problēmām, ar kurām saskaras, strādājot ar enums, nodrošinot jūsu lietojumprogrammu tīrību un apkopi.