Darbas su Enums C#
Pradedantiesiems išvardinti per enumą C# gali būti šiek tiek painu. Tai dažnai sukelia kompiliavimo laiko klaidas, jei tai daroma neteisingai. Norint efektyviai koduoti, labai svarbu suprasti, kaip teisingai kartoti enum reikšmes.
Šiame straipsnyje aptarsime paprastą metodą, kaip surašyti enum C# kalba, naudodamiesi pavyzdžiu, išryškinančiu bendrus spąstus ir teisingą metodą. Pabaigoje galėsite lengvai išvardyti bet kurį sąrašą.
komandą | apibūdinimas |
---|---|
Enum.GetValues(typeof(Suit)) | Nuskaito nurodyto sąrašo konstantų reikšmių masyvą. |
Enum.GetValues() | Grąžina visų sąrašo reikšmių masyvą. |
Cast<T>() | Konvertuoja IEnumerable elementus į nurodytą tipą. |
Console.WriteLine() | Į standartinį išvesties srautą įrašo nurodytus duomenis, po kurių nurodomas srovės linijos baigtuvas. |
foreach | Iteruoja per kolekciją arba masyvą, vykdydamas kiekvieno elemento kodo bloką. |
public enum | Apibrėžia sąrašą, atskirą tipą, susidedantį iš įvardytų konstantų rinkinio, vadinamo skaičiuotojų sąrašu. |
Išsamus Enum iteracijos paaiškinimas
Pateikti scenarijai parodo, kaip tinkamai surašyti enum C# kalba. Pirmasis scenarijus naudoja Enum.GetValues(typeof(Suit)) norėdami gauti visų reikšmių masyvą Suit enum. Tada šis masyvas kartojamas su a foreach kilpa, leidžianti programai vykdyti DoSomething(suit) metodas kiekvienai enum vertei. Šis metodas yra paprastas ir naudoja integruotus C# metodus, kad efektyviai tvarkytų enumus.
Antrasis scenarijus pasiekia tą patį tikslą, tačiau naudoja LINQ, kad būtų lengviau ir lengviau skaityti. Paskambinus Enum.GetValues(typeof(Suit)).Cast<Suit>(), enum reikšmės perduodamos į Suit tipo, leidžiant atlikti sudėtingesnes LINQ operacijas, jei reikia. The foreach ciklas tada apdoroja kiekvieną kostiumą panašiu būdu, iškviesdamas DoSomething(suit) metodas kiekvienai enum vertei. Abu scenarijai yra būtini norint kartoti enumus ir išvengti įprastų spąstų, pavyzdžiui, enum tipo traktavimą kaip kintamąjį.
Enum reikšmių išvardijimas C#
C# naudojimas kartoti per 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);
}
}
Tinkamas eilių išvardijimas C#
LINQ naudojimas Enum iteracijai
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);
}
}
Enum metodų ir savybių supratimas
Be enums kartojimo, labai svarbu suprasti kitus naudingus metodus ir savybes, kurias suteikia enums C#. Vienas iš tokių metodų yra Enum.GetName(), kuris grąžina konstantos pavadinimą nurodytame sąraše, turintį nurodytą reikšmę. Tai gali būti ypač naudinga norint pateikti patogius enum reikšmių pavadinimus.
Kitas naudingas turtas yra Enum.IsDefined(), kuris patikrina, ar tam tikrame sąraše yra nurodyta reikšmė arba pavadinimas. Šis metodas yra patogus patvirtinimo tikslais, siekiant užtikrinti, kad nurodyta reikšmė iš tikrųjų yra apibrėžto enum rinkinio dalis. Šių metodų supratimas leidžia kūrėjams panaudoti visą enumo galią savo programose, užtikrinant tvirtą ir skaitomą kodą.
Dažnai užduodami klausimai apie eilių surašymą C#
- Kaip gauti visus sąrašo pavadinimus?
- Naudokite Enum.GetNames(typeof(Suit)) norėdami gauti enum konstantų pavadinimų masyvą.
- Ar galiu konvertuoti eilutę į enum reikšmę?
- Taip, naudoti Enum.Parse(typeof(Suit), "Spades") konvertuoti eilutę į atitinkamą enum reikšmę.
- Kaip galiu patikrinti, ar sąraše yra reikšmė?
- Naudokite Enum.IsDefined(typeof(Suit), value) norėdami patikrinti, ar sąraše yra konkreti reikšmė.
- Ar enums galima naudoti atliekant bitines operacijas?
- Taip, apibrėžiant enum su [Flags] atributas, enums gali būti naudojami bitų operacijoms.
- Kaip sužinoti pagrindinį enum tipą?
- Naudokite Enum.GetUnderlyingType(typeof(Suit)) gauti pagrindinį enum tipą.
- Kokia yra numatytoji enum reikšmė?
- Numatytoji sąrašo reikšmė yra reikšmė, susieta su nuliu, kuri paprastai yra pirmoji sąraše nurodyta reikšmė.
- Ar galiu kartoti enum pavadinimus, o ne vertes?
- Taip, galite naudoti foreach (string name in Enum.GetNames(typeof(Suit))) kartoti per pavadinimus.
- Kaip galiu palyginti dvi enum vertes?
- Enum reikšmes galima palyginti naudojant standartinius palyginimo operatorius, pvz ==, !=, <, ir >.
Svarbiausios išvados apie eilėraštį
Apibendrinant galima pasakyti, kad norint išvardinti enumą C#, reikia suprasti teisingus metodus ir kalbos teikiamas savybes. Naudojant Enum.GetValues leidžia atlikti nesudėtingą iteraciją, o LINQ suteikia papildomo lankstumo. Užtikrinus tinkamą šių metodų naudojimą, išvengiama įprastų spąstų, pavyzdžiui, enum tipo traktavimas kaip kintamasis. Be to, pasitelkiant kitus enum metodus, pvz Enum.GetName ir Enum.IsDefined padidina jūsų kodo tvirtumą. Šių metodų įsisavinimas yra būtinas efektyviam C# programavimui, leidžiančiam efektyviai ir tiksliai tvarkyti enumus savo programose.