AYUDA .NET

C# Switch Expression (Cómo funciona para los desarrolladores)

Actualizado 12 de diciembre, 2023
Compartir:

C# evoluciona continuamente, incorporando funciones que elevan la expresividad del lenguaje y mejoran la experiencia general del desarrollador. Entre estas características, destaca la expresión switch, que sirve como herramienta potente y sucinta para gestionar múltiples condiciones dentro de una única expresión.

Esta completa exploración profundiza en los entresijos de la expresión switch de C#, proporcionando ejemplos que ponen de relieve su sintaxis, aplicaciones y ventajas.

Desde la concordancia de patrones y los valores constantes hasta los patrones de tipo y el uso de palabras clave como "switch" y "case", navegamos por los diversos elementos de esta característica del lenguaje. La discusión abarca varios patrones, como los patrones constantes, los patrones relacionales y los patrones de tipo, elucidando sus funciones dentro del contexto de la expresión switch.

Además, examinamos la incorporación de expresiones de conmutación en escenarios del mundo real, mostrando su utilidad y proporcionando claridad sobre su sintaxis e implementación. Para más información sobre las expresiones de conmutación, visite artículo.

En este artículo, repasaremos los ejemplos de expresiones switch y probaremos su caso de uso utilizando Biblioteca PDF IronPDF C#.

1. Introducción a Switch Expression

La expresión switch, introducida en C# 8.0, representa un cambio de paradigma en la forma en que los desarrolladores manejan la lógica condicional. Tradicionalmente, la sentencia switch era la mejor opción para bifurcarse basándose en diferentes valores, pero tenía limitaciones en términos de verbosidad y flexibilidad cuando se utilizaba la palabra clave. La expresión switch aborda estas preocupaciones proporcionando una sintaxis concisa que permite un código más expresivo y funcional.

En su forma más simple, la expresión switch se parece a una sentencia switch tradicional, pero es más versátil. Evalúa una expresión y selecciona una rama en función del valor de dicha expresión. Este cambio de paradigma permite a los desarrolladores escribir un código más limpio y legible con menos repeticiones.

2. Sintaxis y uso básico

La sintaxis de la expresión switch de C# es intuitiva, por lo que resulta fácil de adoptar para los desarrolladores familiarizados con las sentencias switch tradicionales. He aquí un ejemplo básico

string result = input switch 
    { 
    "case1" => "Result for case 1",
    "case2" => "Result for case 2",
    _ => "Default result for case label" 
    };
string result = input switch 
    { 
    "case1" => "Result for case 1",
    "case2" => "Result for case 2",
    _ => "Default result for case label" 
    };
Dim tempVar As String
Select Case input
	Case "case1"
		tempVar = "Result for case 1"
	Case "case2"
		tempVar = "Result for case 2"
	Case Else
		tempVar = "Default result for case label"
End Select
Dim result As String = tempVar
VB   C#

En este ejemplo, la variable entrada se evalúa con respecto a varios casos. Si el patrón coincide con uno de los casos especificados, el resultado correspondiente se asigna a la variable resultado. El guión bajo (_) representa el caso opcional por defecto, similar a la palabra clave default en una sentencia switch tradicional.

La expresión switch admite una amplia gama de patrones, incluidos patrones constantes, patrones de tipo, patrón de tipo, patrón relacional, etc., lo que la convierte en una herramienta versátil para manejar escenarios complejos. Puede ser particularmente útil cuando se trata de enumeraciones, evitando la necesidad de repetitivas declaraciones case.

3. Patrones avanzados y deconstrucción

Uno de los puntos fuertes de la expresión switch reside en su capacidad para trabajar con patrones avanzados y deconstrucción. Esto permite a los desarrolladores extraer valores de objetos, matrices y patrones de forma concisa. Considere el siguiente ejemplo de una expresión de conmutación:

var result = shape switch 
    { 
    (Circle c) => $"Circle with radius {c.Radius}",
    (Rectangle r) => $"Rectangle with dimensions {r.Length}x{r.Width}",
    _ => "Unknown shape" 
    };
var result = shape switch 
    { 
    (Circle c) => $"Circle with radius {c.Radius}",
    (Rectangle r) => $"Rectangle with dimensions {r.Length}x{r.Width}",
    _ => "Unknown shape" 
    };
'INSTANT VB TODO TASK: The following 'switch expression' was not converted by Instant VB:
'var result = shape switch
'	{ 
'	(Circle c) => $"Circle with radius {c.Radius}",
'	(Rectangle r) => $"Rectangle with dimensions {r.Length}x{r.Width}",
'	_ => "Unknown shape"
'	};
VB   C#

En este caso, el valor de entrada inicial, la variable shape se descompone en sus componentes (Círculo o rectángulo)y se genera el mensaje adecuado en función del tipo y los valores.

4. Expresión de conmutación frente a sentencia de conmutación

Aunque la expresión switch comparte similitudes con el patrón semántico switch-like tradicional, ofrece varias ventajas. La expresión de la palabra clave switch es más concisa, eliminando la necesidad de declaraciones break-case y reduciendo el código boilerplate. También permite asignar valores directamente dentro de la expresión, lo que hace que el código sea más expresivo.

Otra característica destacable es la posibilidad de utilizar expresiones de la expresión switch en una expresión lambda o como parte de un miembro con cuerpo de expresión en métodos o propiedades, lo que contribuye a un estilo de programación más funcional.

Además, la expresión switch fomenta el uso de la concordancia de patrones constantes, proporcionando una forma más natural y potente de manejar diferentes casos.

5. Consideraciones sobre el rendimiento y limitaciones

Aunque la expresión switch aporta muchas ventajas, es crucial tener en cuenta las consideraciones de rendimiento. En algunos casos, la sentencia switch puede ser más eficaz, especialmente cuando se trata de un gran número de casos. Los desarrolladores deben evaluar los requisitos específicos de su aplicación y elegir la construcción adecuada en consecuencia.

Otra consideración a tener en cuenta es que la expresión switch no puede sustituir a la sentencia switch por completo. Hay casos en los que la sentencia switch, con su comportamiento "fall-through", puede ser la opción preferida.

Además, la expresión switch sólo está disponible en C# 8.0 y versiones posteriores, por lo que los proyectos dirigidos a versiones anteriores no tendrán acceso a esta función.

6. Aplicación real con IronPDF

La aplicación de la expresión switch de C# es notablemente impactante en escenarios del mundo real, especialmente cuando se gestionan múltiples condiciones o enumeraciones, como se ejemplifica en un caso de uso de IronPDF. Exploremos su utilidad en un sistema de clasificación de documentos

using IronPdf;
using System;
class Program
{
    static void Main()
    {
        //  Simulación de contenido HTML para el documento PDF
        string htmlContent = GetHtmlContent();
        //  Creación de un documento IronPDF
        var pdfDocument = new ChromePdfRenderer();
        //  Conversión de HTML a PDF
        var pdf = pdfDocument.RenderHtmlAsPdf(htmlContent);
        //  Clasificación del documento en función del número de páginas
        string classification = pdf switch
        {
            { PageCount: 1 } => "Single Page Document",
            { PageCount: >= 2 and <= 10 } => "Small Document",
            { PageCount: > 10 } => "Large Document",
            _ => "Unknown Classification"
        };
        //  Guardar el PDF en un archivo
        pdf.SaveAs("document_output.pdf");
        //  Visualización del resultado de la clasificación
        Console.WriteLine($"PDF created successfully. Document Classification: {classification}");
    }
    static string GetHtmlContent()
    {
        //  En un escenario real, usted obtendría el contenido HTML de una fuente real.
        //  Para este ejemplo, crearemos una simple cadena HTML.
        string htmlContent = "<html><body><h1>Hello IronPDF!</h1><p>This is a sample HTML content.</p></body></html>";
        return htmlContent;
    }
}
using IronPdf;
using System;
class Program
{
    static void Main()
    {
        //  Simulación de contenido HTML para el documento PDF
        string htmlContent = GetHtmlContent();
        //  Creación de un documento IronPDF
        var pdfDocument = new ChromePdfRenderer();
        //  Conversión de HTML a PDF
        var pdf = pdfDocument.RenderHtmlAsPdf(htmlContent);
        //  Clasificación del documento en función del número de páginas
        string classification = pdf switch
        {
            { PageCount: 1 } => "Single Page Document",
            { PageCount: >= 2 and <= 10 } => "Small Document",
            { PageCount: > 10 } => "Large Document",
            _ => "Unknown Classification"
        };
        //  Guardar el PDF en un archivo
        pdf.SaveAs("document_output.pdf");
        //  Visualización del resultado de la clasificación
        Console.WriteLine($"PDF created successfully. Document Classification: {classification}");
    }
    static string GetHtmlContent()
    {
        //  En un escenario real, usted obtendría el contenido HTML de una fuente real.
        //  Para este ejemplo, crearemos una simple cadena HTML.
        string htmlContent = "<html><body><h1>Hello IronPDF!</h1><p>This is a sample HTML content.</p></body></html>";
        return htmlContent;
    }
}
Imports IronPdf
Imports System
Friend Class Program
	Shared Sub Main()
		'  Simulación de contenido HTML para el documento PDF
		Dim htmlContent As String = GetHtmlContent()
		'  Creación de un documento IronPDF
		Dim pdfDocument = New ChromePdfRenderer()
		'  Conversión de HTML a PDF
		Dim pdf = pdfDocument.RenderHtmlAsPdf(htmlContent)
		'  Clasificación del documento en función del número de páginas
'INSTANT VB TODO TASK: The following 'switch expression' was not converted by Instant VB:
'		string classification = pdf switch
'		{
'			{ PageCount: 1 } => "Single Page Document",
'			{ PageCount: >= 2 and <= 10 } => "Small Document",
'			{ PageCount: > 10 } => "Large Document",
'			_ => "Unknown Classification"
'		};
		'  Guardar el PDF en un archivo
		pdf.SaveAs("document_output.pdf")
		'  Visualización del resultado de la clasificación
		Console.WriteLine($"PDF created successfully. Document Classification: {classification}")
	End Sub
	Private Shared Function GetHtmlContent() As String
		'  En un escenario real, usted obtendría el contenido HTML de una fuente real.
		'  Para este ejemplo, crearemos una simple cadena HTML.
		Dim htmlContent As String = "<html><body><h1>Hello IronPDF!</h1><p>This is a sample HTML content.</p></body></html>"
		Return htmlContent
	End Function
End Class
VB   C#

En este fragmento de código C#, se utiliza ChromePdfRenderer de IronPDF para convertir contenido HTML simulado en un documento PDF. A continuación, el PDF resultante se somete a una clasificación basada en su número de páginas mediante una expresión de conmutación.

La expresión switch emplea un patrón recursivo para clasificar el documento en distintos tipos, como "Documento de una sola página", "Documento pequeño" o "Documento grande", en función de rangos específicos de recuento de páginas. El documento clasificado se guarda posteriormente en un archivo denominado "documento_salida.pdf", y un mensaje de consola comunica la creación satisfactoria del PDF junto con su resultado de clasificación.

Este enfoque conciso y dinámico muestra la versatilidad de la expresión switch para manejar con eficacia diferentes escenarios, proporcionando una forma racionalizada de categorizar documentos en función de sus propiedades.

6.1. Consola de salida

Expresión de conmutación en C (Cómo funciona para los desarrolladores) Figura 1

7. Conclusión

La expresión switch de C#, introducida en C# 8.0 como evolución fundamental del lenguaje, se ha revelado como una herramienta convincente para que los desarrolladores agilicen la lógica condicional y mejoren la expresividad del código.

Esta exhaustiva exploración ha profundizado en su sintaxis, aplicaciones y ventajas, mostrando su versatilidad a través de ejemplos que emplean varios patrones posicionales y palabras clave como "switch" y "case". Desde su sintaxis intuitiva y su uso básico hasta su patrón de declaración avanzado y sus capacidades de deconstrucción, la expresión switch ha demostrado ser inestimable en la elaboración de código limpio y legible.

La comparación con la sentencia switch tradicional pone de manifiesto su concisión y su compatibilidad con construcciones expresivas, incluidas las expresiones lambda y los miembros con cuerpo de expresión. La capacidad de integrarse a la perfección con bibliotecas externas y contribuir a la generación optimizada de PDF subraya aún más el papel de la expresión switch en el avance de las prácticas modernas de desarrollo en C#.

A medida que C# sigue evolucionando, la expresión switch se erige como testimonio del compromiso del lenguaje de dotar a los desarrolladores de herramientas eficientes y expresivas para la resolución eficaz de problemas.

< ANTERIOR
C# Math (Cómo funciona para desarrolladores)
SIGUIENTE >
NUnit o xUnit .NET Core (Cómo funciona para los desarrolladores)

¿Listo para empezar? Versión: 2024.7 recién publicada

Descarga gratuita de NuGet Descargas totales: 9,974,197 Ver licencias >
123