0Pricing
C# Academy · Lección

Enums y [Flags]

Defina enums con valores y tipos subyacentes explícitos, conviértalos y analícelos de forma segura, y modele opciones combinables con [Flags].

Enums y [Flags] es una lección gratuita de C# Academy en CoddyKit. Esta es la lección 3 de 3. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de C# Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de C# Academy incluye 3 lecciones en total.

Descripción general de los enums

Objetivo: usar enums para constantes con nombre y [Flags] para opciones combinables.

  • Los nombres se asignan a números
  • Tipo subyacente (int de forma predeterminada)
  • Convierta, analice y valide
  • Combine mediante operaciones bit a bit con [Flags]

Enumeración básica

Las enumeraciones son constantes con nombre. Puede imprimir el nombre o convertirlas al número subyacente.

using System;

public enum OrderStatus
{
  Pending = 0,
  Processing = 1,
  Shipped = 2,
  Delivered = 3,
  Cancelled = 4
}

public class Program
{
  public static void Main(string[] args)
  {
    OrderStatus s = OrderStatus.Processing;
    Console.WriteLine("Status = " + s);
    Console.WriteLine("Numeric = " + (int)s);
  }
}

Tipo subyacente y conversión

Puede elegir un tipo subyacente (short, byte, etc.). Convertir desde números no valida el valor.

using System;

// Choose underlying type if needed (default is int)
public enum HttpCode : short
{
  Ok = 200,
  NotFound = 404
}

public class Program
{
  public static void Main(string[] args)
  {
    short code = (short)HttpCode.Ok; // cast to number
    HttpCode fromNum = (HttpCode)404; // cast from number (no validation)
    Console.WriteLine("code=" + code);
    Console.WriteLine("fromNum=" + fromNum);
  }
}

Análisis y validación

Use Enum.TryParse para leer texto y Enum.IsDefined para validar valores numéricos.

using System;

public enum Color
{
  Red = 1, Green = 2, Blue = 3
}

public class Program
{
  public static void Main(string[] args)
  {
    Color c;
    bool ok = Enum.TryParse<Color>("green", true, out c); // ignore case
    Console.WriteLine("Parsed? " + ok + " value=" + c);

    // Validate a numeric value before casting
    int raw = 4;
    bool valid = Enum.IsDefined(typeof(Color), raw);
    Console.WriteLine("Is 4 a defined Color? " + valid);
  }
}

[Flags] en la práctica

Añada [Flags] y asigne valores que sean potencias de dos. Combine con |, compruebe con & y elimine con ~ y &.

using System;

[Flags]
public enum FileAccessMode
{
  None  = 0,
  Read  = 1,   // 0001
  Write = 2,   // 0010
  Exec  = 4    // 0100
}

public class Program
{
  public static void Main(string[] args)
  {
    FileAccessMode m = FileAccessMode.Read | FileAccessMode.Write; // combine
    Console.WriteLine("Mode = " + m); // prints "Read, Write"

    // Test a flag (two common patterns)
    bool canWrite = (m & FileAccessMode.Write) != 0;
    Console.WriteLine("Can write? " + canWrite);

    // Remove a flag
    m = m & ~FileAccessMode.Write;
    Console.WriteLine("After remove: " + m);
  }
}

Consejos sobre enumeraciones

Consejos:

  • Asigne valores explícitos y manténgalos estables.
  • Para [Flags], use potencias de dos e incluya un None = 0.
  • Valide las entradas con Enum.TryParse/IsDefined.
  • Evite usar enteros sin procesar en las API públicas; prefiera las enumeraciones.

Significado del atributo Flags

Comprobación rápida: ¿Qué atributo permite que una enumeración represente opciones combinables mediante operaciones bit a bit, como Read | Write?

Resumen

Resumen: Use enumeraciones para obtener constantes claras y seguras en cuanto al tipo. Analice y valide de forma segura. Para opciones combinables, añada [Flags] y use operadores bit a bit para establecer, comprobar y eliminar indicadores.

Preguntas frecuentes

¿La lección «Enums y [Flags]» es gratis?

Sí — el texto completo de «Enums y [Flags]» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de C# Academy, actualiza a CoddyKit PRO. El curso de C# Academy incluye 3 lecciones en total.

¿Qué aprenderé en «Enums y [Flags]»?

Defina enums con valores y tipos subyacentes explícitos, conviértalos y analícelos de forma segura, y modele opciones combinables con [Flags]. Practicas C# Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar C# Academy?

No se requiere experiencia previa. C# Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 3.

¿Cuánto tiempo toma la lección «Enums y [Flags]»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de C# Academy?

Sí. Cada lección de C# Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Structs: semántica de valor y patrón de inmutabilidad
  2. Tipos similares a records e igualdad basada en valores (patrón)
  3. Enums y [Flags]
← Volver a C# Academy