AYUDA .NET

C# Case Statement (Cómo funciona para los desarrolladores)

Publicado en 4 de enero, 2024
Compartir:

En sentencia switch en C# ofrece una alternativa más ágil y legible a las múltiples expresiones if-else. Resulta útil cuando se tiene una variable que puede tomar uno de varios valores distintos y se necesita ejecutar código diferente en función del valor. Esta sentencia case evalúa una expresión y ejecuta código estático void main basado en el valor coincidente, lo que la convierte en una parte integral de la toma de decisiones en tu código.

Mientras que las estructuras if-else son geniales para condiciones o comprobaciones simples, las sentencias switch case brillan cuando se trata de comprobaciones de condiciones más complejas, especialmente aquellas basadas en una única variable o expresión de coincidencia de patrón. Proporcionan una sintaxis más limpia y comprensible en comparación con la sentencia if, lo que es crucial tanto para escribir como para mantener el mismo código.

Conceptos básicos de la declaración Switch

¿Qué es una Declaración Switch?

Una sentencia switch en C# es una estructura de control utilizada para seleccionar una de las muchas rutas de código a ejecutar. La selección se basa en el valor o en una expresión con cualquiera de los tipos de datos. Es una alternativa eficaz al uso de múltiples condiciones if-else, especialmente cuando se trata de una variable que puede tener varios valores distintos.

Sintaxis

La sintaxis básica de una sentencia switch es sencilla:

//switch statement
switch (variable)
{
    case value1:
        // Code to execute if variable equals value1
        break;
    case value2:
        // Code to execute if variable equals value2
        break;
    // More cases as needed
    default:
        // Code to execute if variable doesn't match any case or fall through behavior
        break;
}
//switch statement
switch (variable)
{
    case value1:
        // Code to execute if variable equals value1
        break;
    case value2:
        // Code to execute if variable equals value2
        break;
    // More cases as needed
    default:
        // Code to execute if variable doesn't match any case or fall through behavior
        break;
}
'switch statement
Select Case variable
	Case value1
		' Code to execute if variable equals value1
	Case value2
		' Code to execute if variable equals value2
	' More cases as needed
	Case Else
		' Code to execute if variable doesn't match any case or fall through behavior
End Select
VB   C#
  • interruptor (variable): Aquí es donde se especifica la variable o expresión a evaluar como se muestra en el programa anterior.
  • caso valor1: Estos son los diferentes valores o condiciones que compruebas contra la variable.
  • break: Esta palabra clave se utiliza para salir del bloque switch una vez que se ejecuta un caso coincidente.
  • Sentencia por defecto: Este bloque opcional goto se ejecuta si ninguno de los casos especificados coincide con la variable.

Comprender la declaración de ruptura

La sentencia break en el switch es crucial. Evita el comportamiento "fall through", en el que la ejecución pasa al caso siguiente aunque ya se cumpla la condición de coincidencia. Cada bloque case suele terminar con una sentencia break para garantizar que sólo se ejecuta el código del case correspondiente.

Comparación de las sentencias Switch e If-Else

Mientras que la estructura de la sentencia if-else implica la comprobación de una condición y la ejecución de un bloque de código si la condición es verdadera, las sentencias switch comparan una única variable o expresión con múltiples valores potenciales. Esto hace que la sentencia switch sea más concisa y fácil de leer cuando se tienen muchas condiciones o patrones de casos que comprobar.

Ejemplo: Uso de una sentencia Switch

int number = 3;
switch (number)
{
    case 1:
        Console.WriteLine("One");
        break;
    case 2:
        Console.WriteLine("Two");
        break;
    case 3:
        Console.WriteLine("Three");
        break;
    default:
        Console.WriteLine("Other Number");// print to console
        break;
}
int number = 3;
switch (number)
{
    case 1:
        Console.WriteLine("One");
        break;
    case 2:
        Console.WriteLine("Two");
        break;
    case 3:
        Console.WriteLine("Three");
        break;
    default:
        Console.WriteLine("Other Number");// print to console
        break;
}
Dim number As Integer = 3
Select Case number
	Case 1
		Console.WriteLine("One")
	Case 2
		Console.WriteLine("Two")
	Case 3
		Console.WriteLine("Three")
	Case Else
		Console.WriteLine("Other Number") ' print to console
End Select
VB   C#

En este ejemplo, el programa imprimirá "Tres" como salida ya que el número coincide con el caso 3.

El papel del caso por defecto

Comprender el valor predeterminado en un bloque de interruptores

En una sentencia switch, el caso por defecto juega un papel crucial. Sirve como opción comodín que se ejecuta cuando ninguna de las etiquetas de caso especificadas coincide con el valor de la expresión de conmutación. Aunque es opcional, incluir un caso por defecto es una buena práctica, especialmente para manejar valores inesperados o desconocidos.

Cómo y cuándo utilizar la declaración por defecto

El caso por defecto se utiliza cuando se desea ejecutar un bloque de código si no coincide ninguno de los casos específicos. Garantiza que la sentencia switch siempre tenga un comportamiento definido, independientemente de la entrada. El caso por defecto se declara utilizando la palabra clave default, seguida de dos puntos.

default:
    // Code to execute if no case matches
    break;
default:
    // Code to execute if no case matches
    break;
Case Else
	' Code to execute if no case matches
	break
VB   C#

El caso por defecto se puede colocar en cualquier lugar dentro del bloque de conmutación, pero normalmente se coloca al final para facilitar la lectura.

Ejemplo: Sentencia Switch con Caso por Defecto

Imagínese que está evaluando un día de la semana:

int day = 5;
string dayName;
switch (day)
{
    case 1:
        dayName = "Monday";
        break;
    case 2:
        dayName = "Tuesday";
        break;
    case 3:
        dayName = "Wednesday";
        break;
    case 4:
        dayName = "Thursday";
        break;
    case 5:
        dayName = "Friday";
        break;
    case 6:
        dayName = "Saturday";
        break;
    case 7:
        dayName = "Sunday";
        break;
    default:
        dayName = "Invalid day";
        break;
}
Console.WriteLine(dayName);
int day = 5;
string dayName;
switch (day)
{
    case 1:
        dayName = "Monday";
        break;
    case 2:
        dayName = "Tuesday";
        break;
    case 3:
        dayName = "Wednesday";
        break;
    case 4:
        dayName = "Thursday";
        break;
    case 5:
        dayName = "Friday";
        break;
    case 6:
        dayName = "Saturday";
        break;
    case 7:
        dayName = "Sunday";
        break;
    default:
        dayName = "Invalid day";
        break;
}
Console.WriteLine(dayName);
Dim day As Integer = 5
Dim dayName As String
Select Case day
	Case 1
		dayName = "Monday"
	Case 2
		dayName = "Tuesday"
	Case 3
		dayName = "Wednesday"
	Case 4
		dayName = "Thursday"
	Case 5
		dayName = "Friday"
	Case 6
		dayName = "Saturday"
	Case 7
		dayName = "Sunday"
	Case Else
		dayName = "Invalid day"
End Select
Console.WriteLine(dayName)
VB   C#

En este ejemplo, si day tiene un valor distinto de 1 a 7, se ejecuta el caso por defecto, estableciendo dayName como "Día no válido".

Buenas prácticas para el caso por defecto

Incluya siempre un caso por defecto: Aunque creas que has cubierto todos los casos posibles, incluye un caso por defecto para manejar valores imprevistos.

Acciones significativas: Utiliza el caso por defecto para realizar acciones significativas, como registrar un error, establecer un valor por defecto o notificar al usuario de un valor desconocido.

Funciones avanzadas del conmutador

Introducción a las expresiones de conmutación en C#

Con la evolución de C#, se introdujeron las expresiones switch como una forma más concisa y expresiva de manejar múltiples ramas condicionales. A diferencia de las sentencias switch tradicionales, las expresiones switch devuelven un valor y son más ágiles, lo que las convierte en una potente herramienta de la programación moderna en C#.

Sintaxis de las expresiones de conmutación

La sintaxis de una expresión switch en C# es una forma más compacta de la sentencia switch case. He aquí una estructura básica:

var result = variable switch
{
    value1 => result1,
    value2 => result2,
    _ => defaultResult
};
var result = variable switch
{
    value1 => result1,
    value2 => result2,
    _ => defaultResult
};
'INSTANT VB TODO TASK: The following 'switch expression' was not converted by Instant VB:
'var result = variable switch
'{
'	value1 => result1,
'	value2 => result2,
'	_ => defaultResult
'};
VB   C#

El guión bajo (_) representa el caso por defecto en las expresiones switch, funcionando de forma similar al bloque por defecto en las sentencias switch tradicionales.

Ejemplo: Utilización de una expresión de conmutación

Imagínese que necesita clasificar una lectura de temperatura:

int temperature = 25;
string weatherDescription = temperature switch
{
    <= 0 => "Freezing",
    < 20 => "Cold",
    < 30 => "Mild",
    _ => "Hot"
};
Console.WriteLine(weatherDescription);
int temperature = 25;
string weatherDescription = temperature switch
{
    <= 0 => "Freezing",
    < 20 => "Cold",
    < 30 => "Mild",
    _ => "Hot"
};
Console.WriteLine(weatherDescription);
Dim temperature As Integer = 25
'INSTANT VB TODO TASK: The following 'switch expression' was not converted by Instant VB:
'string weatherDescription = temperature switch
'{
'	<= 0 => "Freezing",
'	< 20 => "Cold",
'	< 30 => "Mild",
'	_ => "Hot"
'};
Console.WriteLine(weatherDescription)
VB   C#

En este ejemplo, la expresión switch categoriza sucintamente la temperatura, con el caso por defecto (_) cubriendo cualquier escenario no coincidente con los otros casos.

Comparación de patrones con expresiones de conmutación

Las expresiones de cambio en C# permiten la coincidencia de patrones, lo que las hace aún más versátiles. Puede hacer coincidir tipos, valores o incluso patrones:

object obj = // some object;
string description = obj switch
{
    int i => $"Integer: {i}",
    string s => $"String: {s}",
    _ => "Unknown type"
};
object obj = // some object;
string description = obj switch
{
    int i => $"Integer: {i}",
    string s => $"String: {s}",
    _ => "Unknown type"
};
'INSTANT VB TODO TASK: The following 'switch expression' was not converted by Instant VB:
'object obj = string description = obj switch
'{
'	int i => $"Integer: {i}",
'	string s => $"String: {s}",
'	_ => "Unknown type"
'};
VB   C#

C# Sentencia Switch vs. Expresión Switch

Sentencia Switch en C#: Tradicionalmente utilizada para ejecutar diferentes bloques de código basados en el valor de una variable. Requiere una sentencia break para cada caso.

Expresión de conmutación: Introducida en C# 8.0, proporciona una sintaxis más concisa y se utiliza normalmente cuando es necesario devolver un valor en función de una condición.

Integración de Switch Statements con IronPDF en C#

Sentencia Case en C# (Cómo funciona para los desarrolladores): Figura 1 - IronPDF

IronPDF es una biblioteca PDF .NET para crear, editar y trabajar con documentos PDF. Cuando se combina con expresiones o sentencias switch de C#, se convierte en una potente herramienta para gestionar diversas operaciones relacionadas con PDF basadas en condiciones específicas. Esta integración es especialmente útil para tareas que requieren tomar decisiones basadas en el contenido o los metadatos de los PDF.

La característica clave de IronPDF es la conversión HTML a PDF, manteniendo los diseños y estilos intactos. Esto es ideal para crear PDFs a partir de contenido web, incluidos informes, facturas y documentación. Los archivos HTML, las URLs y las cadenas HTML se pueden convertir en archivos 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");
    }
}
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
VB   C#

Ejemplo: Marca de agua condicional con IronPDF y sentencias Switch

Consideremos una situación en la que tiene un documento PDF y desea aplicar diferentes marcas de agua en función del número de páginas del documento. A continuación se explica cómo conseguirlo utilizando IronPDF en combinación con una sentencia switch de C#:

using IronPdf;
IronPdf.License.LicenseKey = "Your-License-Code";
PdfDocument pdf = PdfDocument.FromFile("sample.pdf");
// Define different watermark HTML for each case
string watermarkHtmlOnePage = "<div style='color:red;'>One Page Document</div>";
string watermarkHtmlTwoPage = "<div style='color:blue;'>Two Page Document</div>";
switch (pdf.PageCount)
{
    case 1:
        // Apply watermark for one-page document
        pdf.ApplyWatermark(watermarkHtmlOnePage);
        break;
    case 2:
        // Apply watermark for two-page documents
        pdf.ApplyWatermark(watermarkHtmlTwoPage);
        break;
    default:
        // Apply a default watermark for other cases
        pdf.ApplyWatermark("<div style='color:green;'>Multiple Page Document</div>");
        break;
}
// Save the watermarked PDF
pdf.SaveAs("watermarked.pdf");
using IronPdf;
IronPdf.License.LicenseKey = "Your-License-Code";
PdfDocument pdf = PdfDocument.FromFile("sample.pdf");
// Define different watermark HTML for each case
string watermarkHtmlOnePage = "<div style='color:red;'>One Page Document</div>";
string watermarkHtmlTwoPage = "<div style='color:blue;'>Two Page Document</div>";
switch (pdf.PageCount)
{
    case 1:
        // Apply watermark for one-page document
        pdf.ApplyWatermark(watermarkHtmlOnePage);
        break;
    case 2:
        // Apply watermark for two-page documents
        pdf.ApplyWatermark(watermarkHtmlTwoPage);
        break;
    default:
        // Apply a default watermark for other cases
        pdf.ApplyWatermark("<div style='color:green;'>Multiple Page Document</div>");
        break;
}
// Save the watermarked PDF
pdf.SaveAs("watermarked.pdf");
Imports IronPdf
IronPdf.License.LicenseKey = "Your-License-Code"
Dim pdf As PdfDocument = PdfDocument.FromFile("sample.pdf")
' Define different watermark HTML for each case
Dim watermarkHtmlOnePage As String = "<div style='color:red;'>One Page Document</div>"
Dim watermarkHtmlTwoPage As String = "<div style='color:blue;'>Two Page Document</div>"
Select Case pdf.PageCount
	Case 1
		' Apply watermark for one-page document
		pdf.ApplyWatermark(watermarkHtmlOnePage)
	Case 2
		' Apply watermark for two-page documents
		pdf.ApplyWatermark(watermarkHtmlTwoPage)
	Case Else
		' Apply a default watermark for other cases
		pdf.ApplyWatermark("<div style='color:green;'>Multiple Page Document</div>")
End Select
' Save the watermarked PDF
pdf.SaveAs("watermarked.pdf")
VB   C#

Aquí está el archivo PDF de salida de una página:

Sentencia Case en C# (Cómo funciona para los desarrolladores): Figura 2 - Salida

Conclusión

En este tutorial, hemos explorado la sentencia switch case en C#, una forma de tomar decisiones en programación. Empezamos por entender su estructura básica y la comparamos con las sentencias if-else tradicionales, destacando sus ventajas en cuanto a legibilidad y simplicidad para manejar múltiples condiciones.

Crearemos casos de conmutación sencillos, manejaremos varios escenarios con el caso por defecto y exploraremos funciones avanzadas como las expresiones de conmutación. La aplicación real de las sentencias switch se demostró mediante un ejemplo de integración de IronPDF para el procesamiento dinámico de PDF, mostrando cómo las sentencias switch pueden ser valiosas en el conjunto de herramientas de un programador.

IronPDF ofrece un prueba gratuitapara explorar sus características y funcionalidades. Para un uso continuado y acceso a todo su conjunto de herramientas, las licencias de IronPDF empiezan desde $749, proporcionando una solución completa para todas sus necesidades de procesamiento de PDF en C#.

< ANTERIOR
C# Queue (Cómo funciona para desarrolladores)
SIGUIENTE >
C# Protegido (Cómo funciona para los desarrolladores)

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

Descarga gratuita de NuGet Descargas totales: 10,912,787 Ver licencias >