Treballant amb enumeracions en C#
Enumerar a través d'una enumeració en C# pot ser una mica confús per als principiants. Això sovint condueix a errors en temps de compilació si no es fa correctament. Comprendre la manera adequada d'iterar a través dels valors d'enum és crucial per a una codificació eficaç.
En aquest article, parlarem d'un enfocament senzill per enumerar una enumeració en C#, utilitzant un exemple que destaca els inconvenients comuns i el mètode correcte. Al final, podreu enumerar qualsevol enumeració amb facilitat.
Comandament | Descripció |
---|---|
Enum.GetValues(typeof(Suit)) | Recupera una matriu dels valors de les constants en una enumeració especificada. |
Enum.GetValues() | Retorna una matriu de tots els valors enumerats. |
Cast<T>() | Converteix els elements d'un IEnumerable al tipus especificat. |
Console.WriteLine() | Escriu les dades especificades, seguides pel final de línia actual, al flux de sortida estàndard. |
foreach | Itera per una col·lecció o matriu, executant un bloc de codi per a cada element. |
public enum | Defineix una enumeració, un tipus diferent que consisteix en un conjunt de constants anomenades llista d'enumeradors. |
Explicació detallada de la iteració Enum
Els scripts proporcionats demostren com enumerar correctament mitjançant una enumeració en C#. El primer script utilitza Enum.GetValues(typeof(Suit)) per recuperar una matriu de tots els valors del fitxer Suit enumeració. A continuació, aquesta matriu s'itera amb a foreach bucle, que permet al programa executar el DoSomething(suit) mètode per a cada valor enumeració. Aquest enfocament és senzill i aprofita els mètodes C# integrats per gestionar les enumeracions de manera eficient.
El segon script aconsegueix el mateix objectiu, però utilitza LINQ per a més flexibilitat i llegibilitat. Per trucar Enum.GetValues(typeof(Suit)).Cast<Suit>(), els valors d'enum es llancen a Suit tipus, permetent operacions LINQ més avançades si cal. El foreach A continuació, el bucle processa cada vestit d'una manera similar, invocant el DoSomething(suit) mètode per a cada valor enumeració. Tots dos scripts són essencials per iterar sobre enumeracions i evitar inconvenients comuns com tractar el tipus d'enum com una variable.
Enumeració de valors d'enumeració en C#
Utilitzant C# per iterar a través d'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);
}
}
Enumeració adequada de enumeracions en C#
Utilitzant LINQ per a la iteració d'enumeració
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);
}
}
Entendre els mètodes i les propietats d'enum
A més d'iterar sobre enumeracions, és essencial entendre altres mètodes i propietats útils que proporcionen les enumeracions en C#. Un d'aquests mètodes és Enum.GetName(), que retorna el nom de la constant a la enumeració especificada que té el valor especificat. Això pot ser especialment útil per mostrar noms fàcils d'utilitzar per als valors d'enumeració.
Una altra propietat útil és Enum.IsDefined(), que comprova si un valor o nom especificat existeix en una enumeració concreta. Aquest mètode és útil per a finalitats de validació per assegurar-se que un valor determinat és efectivament part del conjunt d'enumeració definit. Entendre aquests mètodes permet als desenvolupadors aprofitar tot el poder de les enumeracions a les seves aplicacions, garantint un codi robust i llegible.
Preguntes freqüents sobre l'enumeració de enumeracions en C#
- Com puc obtenir tots els noms d'una enumeració?
- Ús Enum.GetNames(typeof(Suit)) per recuperar una matriu dels noms de les constants a la enumeració.
- Puc convertir una cadena en un valor d'enumeració?
- Sí, utilitza Enum.Parse(typeof(Suit), "Spades") per convertir una cadena al valor de enumeració corresponent.
- Com puc comprovar si existeix un valor en una enumeració?
- Ús Enum.IsDefined(typeof(Suit), value) per comprovar si existeix un valor específic a la enumeració.
- Es poden utilitzar enumeracions amb operacions bit a bit?
- Sí, definint l'enum amb el [Flags] atribut, les enumeracions es poden utilitzar per a operacions bit a bit.
- Com puc obtenir el tipus subjacent d'una enumeració?
- Ús Enum.GetUnderlyingType(typeof(Suit)) per obtenir el tipus subjacent de la enumeració.
- Quin és el valor per defecte d'una enumeració?
- El valor per defecte d'una enumeració és el valor associat a zero, que normalment és el primer valor que apareix a la enumeració.
- Puc recórrer els noms d'enumeració en lloc dels valors?
- Sí, pots utilitzar foreach (string name in Enum.GetNames(typeof(Suit))) per recórrer els noms.
- Com puc comparar dos valors enumerats?
- Els valors d'enum es poden comparar mitjançant operadors de comparació estàndard com ==, !=, <, i >.
Punts clau de l'enumeració
En conclusió, enumerar una enumeració en C# requereix comprendre els mètodes i propietats correctes que proporciona el llenguatge. Utilitzant Enum.GetValues permet una iteració senzilla, mentre que LINQ ofereix flexibilitat addicional. Assegurar l'ús adequat d'aquests mètodes evita inconvenients comuns, com ara tractar el tipus d'enum com una variable. A més, aprofitant altres mètodes d'enumeració com Enum.GetName i Enum.IsDefined millora la robustesa del vostre codi. Dominar aquestes tècniques és essencial per a una programació C# eficaç, que us permetrà gestionar les enumeracions de manera eficient i precisa a les vostres aplicacions.