AYUDA .NET

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

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 cómo pueden utilizarse de manera efectiva en sus aplicaciones de C# utilizando la biblioteca IronPDF para la generación de PDF en .NET.

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 manera de agrupar valores constantes bajo un solo 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
$vbLabelText   $csharpLabel

En el código anterior, Season es un tipo enumerado con cuatro miembros: Spring, Summer, Autumn y Winter. Al definir este enum, ahora podemos crear variables del tipo Season que solo 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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

Esta línea crea una variable currentSeason de tipo Season y le asigna el valor Autumn. Esto deja claro que currentSeason solo puede contener un valor que sea un Season válido.

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)
$vbLabelText   $csharpLabel

Aquí, autumnInt tendrá el valor 4, que corresponde a Autumn en el enum Season. Por otro lado, season se establecerá en Autumn al convertir el entero 4 de nuevo a un Season.

Trabajar con métodos Enum

C# proporciona varios métodos para trabajar con enums, tales como Enum.GetName(), Enum.GetNames(), Enum.GetValue() y Enum.GetValues(), que son útiles para acceder a las constantes int asociadas con 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
$vbLabelText   $csharpLabel

Enums de C# (Cómo Funciona Para Desarrolladores): Figura 1 - Salida de consola de cada valor asociado con el enum Season

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
$vbLabelText   $csharpLabel

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

Al utilizar el atributo [Flags], puedes 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
$vbLabelText   $csharpLabel

Con el enum Permissions definido arriba, puedes 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
$vbLabelText   $csharpLabel

Esto establece myPermissions en una combinación de permisos de Lectura y Escritura.

Sentencias Enum y Switch

Los enums funcionan excepcionalmente bien con las declaraciones switch, lo que te permite ejecutar diferentes bloques de código según 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
$vbLabelText   $csharpLabel

Este código imprimirá "Es verano." porque la variable season está configurada a Season.Summer.

Transformación de cadena en enumeración

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

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)
$vbLabelText   $csharpLabel

Este código convierte la cadena "Winter" a su valor correspondiente del enum Season.Winter.

Integración de IronPDF con Enums en C#

IronPDF PDF Library para Generación Dinámica de Documentos 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 enumeraciones de C# para crear informes PDF a partir de HTML en .NET, y también cubriremos el proceso de instalación de IronPDF en tu proyecto.

Con IronPDF, puedes convertir cualquier HTML, URL o página web en un PDF que se vea exactamente como la fuente. Es una excelente opción para generar PDFs para facturas, informes y otros contenidos basados en la web. ¿Listo para convertir HTML a PDF? IronPDF lo hace sin esfuerzo.

using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
Imports IronPdf

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim renderer = New ChromePdfRenderer()

		' 1. Convert HTML String to PDF
		Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"
		Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent)
		pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf")

		' 2. Convert HTML File to PDF
		Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file
		Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath)
		pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf")

		' 3. Convert URL to PDF
		Dim url = "http://ironpdf.com" ' Specify the URL
		Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
		pdfFromUrl.SaveAs("URLToPDF.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel

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. A continuación, haga clic en la pestaña de búsqueda de la izquierda. A continuación, busque IronPDF, haga clic en instalar y añádalo a su proyecto.

Enums en C# (Cómo Funciona para Desarrolladores): Figura 2 - Instalar IronPDF buscando "IronPDF" usando el Administrador de Paquetes de 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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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 ventas. 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 estacional, llame al método GenerateSeasonalSalesReport con una estación 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
$vbLabelText   $csharpLabel

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

Enums de 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.

Integrar IronPDF con enums en C# permite la generación dinámica de documentos PDF basados en tipos enumerados. IronPDF ofrece una prueba gratuita de sus completas herramientas PDF, proporcionando una variedad de opciones para adaptarse a diferentes necesidades y escalas de proyectos.

Chipego
Ingeniero de software
Chipego tiene una habilidad natural para escuchar que le ayuda a comprender los problemas de los clientes y a ofrecer soluciones inteligentes. Se unió al equipo de Iron Software en 2023, después de estudiar una licenciatura en Tecnología de la Información. IronPDF e IronOCR son los dos productos en los que Chipego se ha centrado, pero su conocimiento de todos los productos crece día a día, a medida que encuentra nuevas formas de ayudar a los clientes. Disfruta de lo colaborativa que es la vida en Iron Software, con miembros del equipo de toda la empresa que aportan su variada experiencia para contribuir a soluciones eficaces e innovadoras. Cuando Chipego está lejos de su escritorio, a menudo se le puede encontrar disfrutando de un buen libro o jugando al fútbol.
< ANTERIOR
C# Params (Cómo funciona para los desarrolladores)
SIGUIENTE >
Dotnet NuGet (Cómo funciona para los desarrolladores)