[Explicación detallada básica de C#] (8) Tipo de enumeración

8.1 Introducción a la enumeración

Una enumeración es un tipo de valor que contiene un conjunto de constantes con nombre. Una enumeración es un tipo de datos denominado tipo de enumeración, que también se utiliza para almacenar datos.

8.2 La utilidad de la enumeración

1) Por ejemplo, en el caso de que necesite reutilizar cadenas específicas de lunes a domingo, puede definir una enumeración llamada semana. Si no se define como una enumeración, puede haber muchas formas de escribirlo, como lunes, lunes, lunes, etc., los tres representan el mismo día.

2) Por ejemplo, en el juego de cortar frutas, hay muchos tipos de frutas, como plátanos, manzanas, naranjas, sandías, etc. En este momento, se puede definir un tipo de enumeración llamado fruta para almacenar los tipos de frutas.

3) Por ejemplo, en un juego suele haber muchas ocupaciones, como luchadores, magos, tiradores... y muchos otros tipos de ocupaciones, por lo que puedes definir un tipo enumerado llamado ocupación. O hay muchos tipos de armas de fuego, como metralletas, rifles, pistolas, rifles de francotirador, etc., puede definir un tipo de enumeración llamado armas de fuego.

8.3 Sintaxis de enumeración

[público] nombre de enumeración

{

valor 1,

valor 2,

valor 3,

……

}

public: Se puede acceder al modificador de acceso, public y public, desde cualquier lugar.

enum: palabra clave, la palabra clave para declarar la enumeración.

Nombre de enumeración: Debe cumplir con la convención de nomenclatura de Pascal.

Aviso:

Declarar la enumeración bajo el espacio de nombres y fuera de la clase significa que todas las clases bajo este espacio de nombres pueden usar esta enumeración.

Una enumeración es un tipo de variable, pero la declaración, la asignación y el uso de la enumeración son diferentes de los de los tipos de variables ordinarias.

Puede declarar una variable de tipo de enumeración, como la variable c1, usar el nombre del tipo de enumeración como prefijo y establecer una constante con nombre para asignar un valor en la enumeración.

De forma predeterminada, el tipo de enumeración es int, el primer miembro de la enumeración será 0 y el valor de cada miembro de enumeración sucesivo aumentará en 1.

valor de enumeración predeterminado
enum WeekDays
{
    Monday,     // 0
    Tuesday,    // 1
    Wednesday,  // 2
    Thursday,   // 3
    Friday,     // 4
    Saturday,   // 5
    Sunday      // 6
}
Asignar valores a los miembros de la enumeración

A los miembros de la enumeración se les pueden asignar diferentes valores. Los cambios en el valor predeterminado de un miembro de enumeración asignarán automáticamente valores incrementales a otros miembros en secuencia.

Incluso puedes asignar diferentes valores a cada miembro.

enum WeekDays
{
    Monday,            // 0
    Tuesday,           // 1
    Wednesday = 3,  // 3
    Thursday,       // 4
    Friday,         // 5
}
enumeración de bytes

Las enumeraciones pueden ser de cualquier tipo de datos numéricos, como byte, sbyte, short, ushort, int, uint, long o ulong. Sin embargo, las enumeraciones no pueden ser de tipo cadena.

Especifique el tipo de herencia después de la enumeración como: tipo. La enumeración de bytes se define a continuación.

enum Fruits: byte
{
    Apple = 1,
    Banana = 5,
    Pear = 6,
    Watermelon = 10, 
    Strawberry = 11, 
    Pineapple = 15
}

8.4 Instancia de conversión de enumeración

instancia base
class Program
{
    public enum Color 
    {
        Red,  //若修改为Red=1,则序号依次累加,默认为0
        Green,
        Blue  //注意最后一个常量值逗号可以省略
    }
    static void Main(string[] args)
    {
        Color c1  = Color.Red;
        Console.WriteLine(c1);
    }
}	

Resultado de salida:

Rojo

El tipo de enumeración se fuerza al tipo int

Cada símbolo de la lista de enumeración representa un valor entero, un valor entero mayor que el símbolo anterior; de forma predeterminada, el valor del primer símbolo de enumeración es 0. Al convertir el tipo de enumeración a tipo int, el subíndice del elemento de enumeración comienza de manera predeterminada desde 0. El uso específico es el siguiente:

public enum Color 
{
    Red,  //默认为0,若修改为Red=1,则序号依次累加
    Green,
    Blue  //注意最后一个常量值逗号可以省略
}
class Program
{
    static void Main(string[] args)
    {
        int x = (int)Color.Red;
        int y = (int)Color.Blue;
        Console.WriteLine("Red={0}\nBlue={1}",x,y);
    }
}	

Resultado de salida:

rojo=0

Azul=2

El tipo int se convierte a la fuerza al tipo de enumeración

Si el tipo int se puede convertir con éxito al tipo de enumeración de acuerdo con el subíndice del elemento, se convertirá al valor del elemento de enumeración correspondiente y, si la conversión falla, se generará el valor int correspondiente.

//声明一个枚举类型Week
public enum Week
{
    星期一 = 10,
    星期二,
    星期三
}
class Program
{
    static void Main(string[] args)
    {
        Week week = (Week)3;
        Console.WriteLine(week);
        Console.WriteLine((Week)10);
        Console.WriteLine((Week)100);
        Console.ReadKey();
    }
}

Resultado de salida:

3

Lunes

100

Tipo de enumeración y tipo de cadena

8.5 Enumeraciones y cadenas

Todos los tipos se pueden convertir en tipos de cadena, incluidos los tipos de enumeración, llamando a ToString().

tipo de enumeración tipo de cadena de conversión

gramática:

Semana semana=Semana Lunes;

semana.ToString();

Los tipos de enumeración se pueden convertir a tipos int y string. El tipo de enumeración es compatible con el tipo int de forma predeterminada, por lo que se pueden convertir entre sí mediante la sintaxis de conversión de tipo obligatoria. Al convertir un valor que no está en una enumeración, no se lanzará ninguna excepción, pero el número se mostrará directamente.

conversión de tipo de cadena tipo de enumeración

gramática:

Identificador de tipo de enumeración a convertir = (tipo de enumeración a convertir) Enum.Parse(typeof(tipo de enumeración a convertir), "cadena a convertir");

Si la cadena convertida es un número, no se lanzará ninguna excepción, incluso si no está en la enumeración.

Si la cadena convertida es texto, se generará una excepción si no hay ninguna en la enumeración.

8.6 Ejercicio de caso de enumeración

El usuario selecciona un estado en línea y, después de la aceptación, la entrada del usuario se convierte en un tipo de enumeración y se imprime nuevamente en la consola.
public enum QQState
{
    OnLine=1,
    OffLine,
    Leave,
    Busy,
    QMe
}
class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("请选择您的qq在线状态 1--OnLine 2--offLine 3--Leave 4--Busy 5--QMe");
        string input = Console.ReadLine();
        switch (input)
        {
            case "1":
                QQState s1 = (QQState)Enum.Parse(typeof(QQState), 	input);
                Console.WriteLine("您选择的在线状态是{0}", s1);
                break;
            case "2":
                QQState s2 = (QQState)Enum.Parse(typeof(QQState), 	input);
                Console.WriteLine("您选择的在线状态是{0}", s2);
                break;
            case "3":
                QQState s3 = (QQState)Enum.Parse(typeof(QQState), 	input);
                Console.WriteLine("您选择的在线状态是{0}", s3);
                break;
            case "4":
                QQState s4 = (QQState)Enum.Parse(typeof(QQState), input);
                Console.WriteLine("您选择的在线状态是{0}", s4);
                break;
            case "5":
                QQState s5 = (QQState)Enum.Parse(typeof(QQState), 	input);
                Console.WriteLine("您选择的在线状态是{0}", s5);
                break;
        }
        Console.ReadKey();
    }
}

Supongo que te gusta

Origin blog.csdn.net/Y1RV1NG/article/details/129671043
Recomendado
Clasificación