AYUDA .NET

C# Enums (Cómo funcionan para los desarrolladores)

Publicado en 26 de marzo, 2024
Compartir:

Los enums, abreviatura de enumeración, son una potente función que permite a los desarrolladores establecer un conjunto de constantes con nombre. Estas constantes hacen que el código sea más legible y fácil de mantener al proporcionar nombres significativos para los valores. En este artículo, exploraremos los conceptos básicos y avanzados de los enums en C# a través de varios ejemplos y explicaciones. Nuestro objetivo es proporcionar una comprensión completa de los enums y de cómo pueden utilizarse eficazmente en sus aplicaciones C# utilizando Biblioteca IronPDF.

Introducción a Enum en C#

Un enum es un tipo de valor en C# que permite que una variable sea un conjunto de constantes predefinidas, cada una denominada miembro de un enum. La palabra clave enum se utiliza para declarar un tipo de enumeración, proporcionando una forma de agrupar valores constantes bajo un mismo nombre. Los Enums mejoran la legibilidad del código y reducen los errores causados por la transmisión de valores incorrectos.

enum Season { Spring, Summer, Autumn, Winter }
enum Season { Spring, Summer, Autumn, Winter }
Friend Enum Season
	Spring
	Summer
	Autumn
	Winter
End Enum
VB   C#

En el código anterior, Season es un tipo enum con cuatro miembros: Primavera, Verano, Otoño e Invierno. Al definir este enum, ahora podemos crear variables de tipo Season que sólo pueden contener uno de estos cuatro valores.

Tipo subyacente de Enums

Comprender el valor entero de los miembros de Enum

Por defecto, el tipo subyacente de un enum en C# es int, conocido como el tipo integral subyacente, y los valores enteros de los miembros del enum empiezan en 0. El valor entero de cada miembro se incrementa en 1 desde el miembro anterior a menos que se especifique explícitamente. También puede definir que el tipo subyacente de un enum sea cualquier otro tipo integral.

enum Season : byte { Spring = 1, Summer, Autumn = 4, Winter }
enum Season : byte { Spring = 1, Summer, Autumn = 4, Winter }
Friend Enum Season As Byte
	Spring = 1
	Summer
	Autumn = 4
	Winter
End Enum
VB   C#

En este ejemplo, Season es un enum, denominado aquí nombre del enum, con un byte como tipo subyacente. A la primavera se le asigna explícitamente el valor 1, por lo que es el valor por defecto, mientras que al verano, otoño e invierno se les asignan los valores correspondientes en función de su orden.

Uso de Enums en el código

Para utilizar un enum, basta con declarar una variable del tipo enum especificado y asignarle un valor de un enum, como uno de los distintos valores definidos dentro de la declaración del enum, utilizando la sintaxis de puntos.

Season currentSeason = Season.Autumn;
Season currentSeason = Season.Autumn;
Dim currentSeason As Season = Season.Autumn
VB   C#

Esta línea crea una variable temporadaactual de tipo temporada y le asigna el valor otoño. Esto deja claro que temporadaActual sólo puede contener un valor que sea una Temporada válida.

Conversión entre valores Enum y enteros

Puede convertir un valor enum a su correspondiente valor entero utilizando un valor integral dado, y viceversa. Esto es útil cuando se necesita almacenar o transmitir datos en su forma numérica.

int autumnInt = (int)Season.Autumn;
Season season = (Season)4;
int autumnInt = (int)Season.Autumn;
Season season = (Season)4;
Imports System

Dim autumnInt As Integer = CInt(Math.Truncate(Season.Autumn))
Dim season As Season = CType(4, Season)
VB   C#

Aquí, autumnInt tendrá el valor 4, que corresponde a Autumn en el enum Season. A la inversa, temporada se establecerá en otoño al devolver el entero 4 a temporada.

Trabajar con métodos Enum

C# proporciona varios métodos para trabajar con enums, como Enum.GetName(), Enum.GetNames(), Enum.GetValue(), y Enum.GetValues(), que son útiles para acceder a las constantes int asociadas a cada miembro del enum.

string [] names = Enum.GetNames(typeof(Season));
foreach (string name in names)
{
    Console.WriteLine(name);
}
string [] names = Enum.GetNames(typeof(Season));
foreach (string name in names)
{
    Console.WriteLine(name);
}
Dim names() As String = System.Enum.GetNames(GetType(Season))
For Each name As String In names
	Console.WriteLine(name)
Next name
VB   C#

Enumeraciones C# (Cómo funciona para desarrolladores): Figura 1 - Salida de consola de cada valor asociado a Season enum

Este fragmento de código imprime los nombres de todos los miembros del enum Season. Estos métodos son increíblemente útiles para iterar sobre todos los valores posibles de un enum o convertir entre la representación de cadena y el valor del enum.

Asignación de valores específicos a miembros de Enum

Puede asignar valores enteros específicos a los miembros del enum para controlar su valor numérico explícitamente.

enum ErrorCode : int { None = 0, NotFound = 404, Unauthorized = 401 }
enum ErrorCode : int { None = 0, NotFound = 404, Unauthorized = 401 }
Friend Enum ErrorCode As Integer
	None = 0
	NotFound = 404
	Unauthorized = 401
End Enum
VB   C#

En este ejemplo, ErrorCode es un enum con valores enteros personalizados asignados a cada miembro. Esto es útil para códigos numéricos predefinidos, como los códigos de estado HTTP.

Uso de Enums como indicadores de bits

Utilizando el [Banderas], puede definir un enum como un conjunto de banderas de bits. Esto le permite almacenar una combinación de valores en una única variable enum.

[Flags]
enum Permissions { None = 0, Read = 1, Write = 2, Execute = 4 }
[Flags]
enum Permissions { None = 0, Read = 1, Write = 2, Execute = 4 }
<Flags>
Friend Enum Permissions
	None = 0
	Read = 1
	Write = 2
	Execute = 4
End Enum
VB   C#

Con el enum Permisos definido anteriormente, puede combinar diferentes permisos utilizando el operador OR a nivel de bits.

Permissions myPermissions = Permissions.Read 
 Permissions.Write;
Permissions myPermissions = Permissions.Read 
 Permissions.Write;
Dim myPermissions As Permissions = Permissions.Read Permissions.Write
VB   C#

Esto establece myPermissions a una combinación de Read y Write permisos.

Sentencias Enum y Switch

Los enums funcionan excepcionalmente bien con las sentencias switch, permitiéndole ejecutar diferentes bloques de código basados en el valor del enum.

Season season = Season.Summer;
switch (season)
{
    case Season.Spring:
        Console.WriteLine("It's spring.");
        break;
    case Season.Summer:
        Console.WriteLine("It's summer.");
        break;
    case Season.Autumn:
        Console.WriteLine("It's autumn.");
        break;
    case Season.Winter:
        Console.WriteLine("It's winter.");
        break;
}
Season season = Season.Summer;
switch (season)
{
    case Season.Spring:
        Console.WriteLine("It's spring.");
        break;
    case Season.Summer:
        Console.WriteLine("It's summer.");
        break;
    case Season.Autumn:
        Console.WriteLine("It's autumn.");
        break;
    case Season.Winter:
        Console.WriteLine("It's winter.");
        break;
}
Dim season As Season = Season.Summer
Select Case season
	Case Season.Spring
		Console.WriteLine("It's spring.")
	Case Season.Summer
		Console.WriteLine("It's summer.")
	Case Season.Autumn
		Console.WriteLine("It's autumn.")
	Case Season.Winter
		Console.WriteLine("It's winter.")
End Select
VB   C#

Este código imprimirá "Es verano" porque la variable temporada está establecida en Temporada.Verano.

Transformación de cadena en enumeración

C# le permite analizar una cadena para obtener el valor de enum correspondiente utilizando la función Enum.Parse() método.

string input = "Winter";
Season season = (Season)Enum.Parse(typeof(Season), input);
string input = "Winter";
Season season = (Season)Enum.Parse(typeof(Season), input);
Dim input As String = "Winter"
Dim season As Season = DirectCast(System.Enum.Parse(GetType(Season), input), Season)
VB   C#

Este código convierte la cadena "Invierno " a su correspondiente valor enum Estación.Invierno.

Integración de IronPDF con Enums en C#

IronPDF es una biblioteca PDF para aplicaciones .NET que ayuda a los desarrolladores a crear, editar y manipular documentos PDF con facilidad. Esta potente biblioteca puede resultar especialmente útil en situaciones en las que se requiere la generación dinámica de PDF, como la generación de informes o facturas. En esta sección, exploraremos cómo integrar IronPDF con los enums de C# para Generación de PDFy también cubriremos el proceso de instalación de IronPDF en su proyecto.

Instalación de IronPDF

La instalación de IronPDF es muy sencilla utilizando la consola del gestor de paquetes NuGet. Abra la consola del gestor de paquetes en Visual Studio y escriba el siguiente comando:

Install-Package IronPdf

Este comando instalará IronPDF en nuestro proyecto.

Una forma alternativa es instalar IronPDF en su proyecto utilizando Visual Studio. En Visual Studio, haga clic con el botón derecho del ratón en el explorador de soluciones y haga clic en NuGet Package Manager for Solutions. Después, haz clic en la pestaña Examinar del lado izquierdo. A continuación, busque IronPDF, haga clic en instalar y añádalo a su proyecto.

Enumeraciones C# (Cómo funciona para desarrolladores): Figura 2 - Instale IronPDF buscando "IronPDF" en el Gestor de Paquetes NuGet

Uso de IronPDF con Enums

Consideremos un escenario en el que desea generar un documento PDF que incluya un informe sobre datos de ventas estacionales. Puede utilizar enums para representar diferentes estaciones y IronPDF para generar el informe PDF. En primer lugar, define un enum para las estaciones:

public enum Season
{
    Spring,
    Summer,
    Autumn,
    Winter
}
public enum Season
{
    Spring,
    Summer,
    Autumn,
    Winter
}
Public Enum Season
	Spring
	Summer
	Autumn
	Winter
End Enum
VB   C#

A continuación, escribiremos un método que genere un informe PDF basado en la estación seleccionada. Este método utilizará IronPDF para crear un sencillo documento PDF que resuma los datos de ventas de la temporada en cuestión.

using IronPdf;
public class SalesReportGenerator
{
    public static void GenerateSeasonalSalesReport(Season season)
    {
        IronPdf.License.LicenseKey = "License-Key";
        var Renderer = new IronPdf.ChromePdfRenderer();
        var htmlTemplate = $"<h1>Sales Report for {season}</h1><p>This section contains sales data for the {season} season.</p>";
        var pdf = Renderer.RenderHtmlAsPdf(htmlTemplate);
        var outputPath = $@"{season}SalesReport.pdf";
        pdf.SaveAs(outputPath);
        Console.WriteLine($"PDF report generated: {outputPath}");
    }
}
using IronPdf;
public class SalesReportGenerator
{
    public static void GenerateSeasonalSalesReport(Season season)
    {
        IronPdf.License.LicenseKey = "License-Key";
        var Renderer = new IronPdf.ChromePdfRenderer();
        var htmlTemplate = $"<h1>Sales Report for {season}</h1><p>This section contains sales data for the {season} season.</p>";
        var pdf = Renderer.RenderHtmlAsPdf(htmlTemplate);
        var outputPath = $@"{season}SalesReport.pdf";
        pdf.SaveAs(outputPath);
        Console.WriteLine($"PDF report generated: {outputPath}");
    }
}
Imports IronPdf
Public Class SalesReportGenerator
	Public Shared Sub GenerateSeasonalSalesReport(ByVal season As Season)
		IronPdf.License.LicenseKey = "License-Key"
		Dim Renderer = New IronPdf.ChromePdfRenderer()
		Dim htmlTemplate = $"<h1>Sales Report for {season}</h1><p>This section contains sales data for the {season} season.</p>"
		Dim pdf = Renderer.RenderHtmlAsPdf(htmlTemplate)
		Dim outputPath = $"{season}SalesReport.pdf"
		pdf.SaveAs(outputPath)
		Console.WriteLine($"PDF report generated: {outputPath}")
	End Sub
End Class
VB   C#

En este ejemplo, definimos un método GenerateSeasonalSalesReport que toma un enum Season como parámetro. Utiliza la clase ChromePdfRenderer de IronPDF para generar un PDF a partir de una cadena HTML que incluye el nombre de la temporada y un texto de marcador de posición para los datos de venta. A continuación, el PDF se guarda con un nombre de archivo que incluye el nombre de la temporada.

Ejecución

Para generar un informe de ventas de temporada, llame al método GenerateSeasonalSalesReport con una temporada específica:

static void Main(string [] args)
{
    SalesReportGenerator.GenerateSeasonalSalesReport(Season.Winter);
}
static void Main(string [] args)
{
    SalesReportGenerator.GenerateSeasonalSalesReport(Season.Winter);
}
Shared Sub Main(ByVal args() As String)
	SalesReportGenerator.GenerateSeasonalSalesReport(Season.Winter)
End Sub
VB   C#

Esta llamada genera un documento PDF llamado InformeVentasInvierno.pdf, que incluye el informe de ventas de la temporada de invierno.

Enumeraciones C# (Cómo funciona para desarrolladores): Figura 3 - Ejemplo de salida PDF utilizando IronPDF del ejemplo de código

Conclusión

Los Enums en C# ofrecen una forma segura de trabajar con conjuntos de constantes con nombre relacionadas. Mejoran la legibilidad del código, reducen los errores y facilitan una organización más limpia del código. Al agrupar valores constantes relacionados bajo un nombre significativo, los enums facilitan la comprensión y el mantenimiento del código.

La integración de IronPDF con enums en C# permite la generación dinámica de documentos PDF basados en tipos enumerados. IronPDF ofrece un prueba gratuita parten de $749, ofreciendo una gama de opciones que se ajustan a las distintas necesidades y escalas de los proyectos.

< ANTERIOR
C# Params (Cómo funciona para los desarrolladores)
SIGUIENTE >
Dotnet NuGet (Cómo funciona para los desarrolladores)

¿Listo para empezar? Versión: 2024.10 acaba de salir

Descarga gratuita de NuGet Descargas totales: 11,173,334 Ver licencias >