Ir para o conteúdo do rodapé
AJUDA DO .NET

Expressão Switch em C# (Como funciona para desenvolvedores)

O C# passa por uma evolução contínua, incorporando recursos que elevam a expressividade da linguagem e aprimoram a experiência geral do desenvolvedor. Dentre essas características, a expressão switch é particularmente notável, servindo como uma ferramenta potente e concisa para gerenciar múltiplas condições dentro de uma única expressão.

Esta exploração abrangente aprofunda-se nas complexidades da expressão switch em C#, fornecendo exemplos que destacam sua sintaxe, aplicações e vantagens.

Desde a correspondência de padrões e valores constantes até padrões de tipo e o uso de palavras-chave como "switch" e "case", exploramos os diversos elementos desse recurso da linguagem. A discussão abrange vários padrões, como padrões constantes, padrões relacionais e padrões de tipo, elucidando seus papéis no contexto da expressão switch.

Além disso, examinamos a incorporação de expressões switch em cenários do mundo real, demonstrando sua utilidade e esclarecendo sua sintaxe e implementação. Para obter informações mais detalhadas sobre expressões switch, consulte esta documentação da Microsoft sobre expressões switch em C# .

Neste artigo, vamos analisar exemplos de expressões switch e testar seu uso com a biblioteca IronPDF C# PDF .

1. Introdução à expressão Switch

A expressão switch, introduzida no C# 8.0, representa uma mudança de paradigma na forma como os desenvolvedores lidam com a lógica condicional. Tradicionalmente, a instrução switch era a escolha preferida para ramificar o código com base em diferentes valores, mas apresentava limitações em termos de verbosidade e flexibilidade quando palavras-chave eram utilizadas. A expressão switch resolve essas preocupações ao fornecer uma sintaxe concisa que permite um código mais expressivo e funcional.

Em sua forma mais simples, a expressão switch se assemelha a uma instrução switch tradicional, mas é mais versátil. Ela avalia uma expressão e seleciona um ramo com base no valor dessa expressão. Essa mudança de paradigma permite que os desenvolvedores escrevam um código mais limpo e legível, com menos código repetitivo.

2. Sintaxe e Uso Básico

A sintaxe da expressão switch em C# é intuitiva, facilitando sua adoção por desenvolvedores familiarizados com as instruções switch tradicionais. Eis um exemplo 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
$vbLabelText   $csharpLabel

Neste exemplo, a variável de entrada é avaliada em relação a múltiplos casos. Se o padrão corresponder a um dos casos especificados, o resultado correspondente será atribuído à variável de resultado . O sublinhado ( _ ) representa o caso opcional padrão, semelhante à palavra-chave default em uma instrução switch tradicional.

A expressão switch suporta uma ampla gama de padrões, incluindo padrões de constantes, padrões de tipos, padrões relacionais e muito mais, tornando-se uma ferramenta versátil para lidar com cenários complexos. Isso pode ser particularmente útil ao lidar com enumerações, evitando a necessidade de declarações case repetitivas.

3. Padrões Avançados e Desconstrução

Uma das vantagens da expressão switch reside na sua capacidade de trabalhar com padrões avançados e desconstrução. Isso permite que os desenvolvedores extraiam valores de objetos, matrizes e padrões de forma concisa. Considere o seguinte exemplo de uma expressão switch:

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"
'};
$vbLabelText   $csharpLabel

Neste caso, o valor de entrada inicial, a variável de forma , é decomposta em seus componentes (Círculo ou Retângulo), e a mensagem apropriada é gerada com base no tipo e nos valores.

4. Expressão switch vs. instrução switch

Embora a expressão switch compartilhe semelhanças com o padrão semântico tradicional do tipo switch, ela oferece diversas vantagens. A expressão com a palavra-chave switch é mais concisa, eliminando a necessidade de instruções break-case e ​​reduzindo o código repetitivo. Isso também permite a atribuição de valores diretamente dentro da expressão, tornando o código mais expressivo.

Outra característica notável é a capacidade de usar expressões da expressão switch em uma expressão lambda ou como parte de um membro com corpo de expressão em métodos ou propriedades, contribuindo para um estilo de programação mais funcional.

Além disso, a expressão switch incentiva o uso de correspondência de padrões constantes, proporcionando uma maneira mais natural e poderosa de lidar com diferentes casos.

5. Considerações e limitações de desempenho

Embora a expressão switch traga muitos benefícios, é crucial estar ciente das considerações de desempenho. Em alguns cenários, a instrução switch pode ser mais eficiente, especialmente ao lidar com um grande número de casos. Os desenvolvedores devem avaliar os requisitos específicos de sua aplicação e escolher a estrutura apropriada de acordo com isso.

Outro ponto a considerar é que a expressão switch não pode substituir completamente a instrução switch. Há casos em que a instrução switch, com seu comportamento de "fall-through" (contínuo após o término do processo), pode ser a escolha preferida.

Além disso, a expressão switch está disponível apenas no C# 8.0 e versões posteriores, portanto, projetos direcionados a versões anteriores não terão acesso a esse recurso.

O grande diferencial do IronPDF é sua função de conversão de HTML para PDF , que preserva todos os layouts e estilos. Permite a geração de PDFs a partir de conteúdo da web, ideal para relatórios, faturas e documentação. Arquivos HTML, URLs e strings HTML podem ser convertidos em PDFs sem esforço.

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

6. Aplicação prática com o IronPDF

A aplicação da expressão switch em C# tem um impacto notável em cenários do mundo real, especialmente ao gerenciar múltiplas condições ou enumerações, como exemplificado em um caso de uso do IronPDF . Vamos explorar sua praticidade em um sistema de classificação de documentos.

using IronPdf;
using System;

class Program
{
    static void Main()
    {
        // Simulate HTML content for the PDF document
        string htmlContent = GetHtmlContent();

        // Creating IronPDF Document
        var pdfDocument = new ChromePdfRenderer();

        // Converting HTML to PDF
        var pdf = pdfDocument.RenderHtmlAsPdf(htmlContent);

        // Classifying the document based on the page count
        string classification = pdf switch
        {
            { PageCount: 1 } => "Single Page Document",
            { PageCount: >= 2 and <= 10 } => "Small Document",
            { PageCount: > 10 } => "Large Document",
            _ => "Unknown Classification"
        };

        // Save the PDF to a file
        pdf.SaveAs("document_output.pdf");

        // Displaying the classification result
        Console.WriteLine($"PDF created successfully. Document Classification: {classification}");
    }

    static string GetHtmlContent()
    {
        // In a real-world scenario, you would obtain the HTML content from an actual source.
        // For the sake of this example, we'll create a simple HTML string.
        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()
    {
        // Simulate HTML content for the PDF document
        string htmlContent = GetHtmlContent();

        // Creating IronPDF Document
        var pdfDocument = new ChromePdfRenderer();

        // Converting HTML to PDF
        var pdf = pdfDocument.RenderHtmlAsPdf(htmlContent);

        // Classifying the document based on the page count
        string classification = pdf switch
        {
            { PageCount: 1 } => "Single Page Document",
            { PageCount: >= 2 and <= 10 } => "Small Document",
            { PageCount: > 10 } => "Large Document",
            _ => "Unknown Classification"
        };

        // Save the PDF to a file
        pdf.SaveAs("document_output.pdf");

        // Displaying the classification result
        Console.WriteLine($"PDF created successfully. Document Classification: {classification}");
    }

    static string GetHtmlContent()
    {
        // In a real-world scenario, you would obtain the HTML content from an actual source.
        // For the sake of this example, we'll create a simple HTML string.
        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()
		' Simulate HTML content for the PDF document
		Dim htmlContent As String = GetHtmlContent()

		' Creating IronPDF Document
		Dim pdfDocument = New ChromePdfRenderer()

		' Converting HTML to PDF
		Dim pdf = pdfDocument.RenderHtmlAsPdf(htmlContent)

		' Classifying the document based on the page count
'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"
'		};

		' Save the PDF to a file
		pdf.SaveAs("document_output.pdf")

		' Displaying the classification result
		Console.WriteLine($"PDF created successfully. Document Classification: {classification}")
	End Sub

	Private Shared Function GetHtmlContent() As String
		' In a real-world scenario, you would obtain the HTML content from an actual source.
		' For the sake of this example, we'll create a simple HTML string.
		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
$vbLabelText   $csharpLabel

Neste trecho de código C#, o ChromePdfRenderer do IronPDF é utilizado para converter conteúdo HTML simulado em um documento PDF. O PDF resultante é então classificado com base no número de páginas, utilizando uma expressão de alternância.

A expressão switch utiliza um padrão recursivo para categorizar o documento em diferentes tipos, como "Documento de Página Única", "Documento Pequeno" ou "Documento Grande", dependendo de intervalos específicos de contagem de páginas. O documento classificado é então salvo em um arquivo chamado "document_output.pdf", e uma mensagem no console comunica a criação bem-sucedida do PDF juntamente com o resultado da classificação.

Essa abordagem concisa e dinâmica demonstra a versatilidade da expressão switch em lidar eficientemente com diferentes cenários, proporcionando uma maneira simplificada de categorizar documentos com base em suas propriedades.

6.1. Console de Saída

Expressão Switch em C# (Como funciona para desenvolvedores) Figura 1

7. Conclusão

A expressão switch do C#, introduzida no C# 8.0 como uma evolução crucial na linguagem, emergiu como uma ferramenta poderosa para desenvolvedores simplificarem a lógica condicional e aprimorarem a expressividade do código.

Esta análise abrangente explorou sua sintaxe, aplicações e vantagens, demonstrando sua versatilidade por meio de exemplos que empregam diversos padrões posicionais e palavras-chave como "switch" e "case". Desde sua sintaxe intuitiva e uso básico até padrões de declaração avançados e recursos de desconstrução, a expressão switch provou ser inestimável na criação de código limpo e legível.

A comparação com a instrução switch tradicional destaca sua concisão e suporte a construções expressivas, incluindo expressões lambda e membros com corpo de expressão. A capacidade de se integrar perfeitamente com bibliotecas externas e contribuir para a geração simplificada de PDFs reforça ainda mais o papel da expressão switch no avanço das práticas modernas de desenvolvimento em C#.

À medida que o C# continua a evoluir, a expressão switch permanece como uma prova do compromisso da linguagem em capacitar os desenvolvedores com ferramentas eficientes e expressivas para a resolução eficaz de problemas.

Perguntas frequentes

Como posso usar expressões switch em C# para classificação de documentos?

As expressões `switch` em C# são ideais para sistemas de classificação de documentos. Por exemplo, usando o IronPDF, você pode categorizar documentos PDF com base em propriedades como o número de páginas. A sintaxe concisa das expressões `switch` permite o manuseio e a classificação eficientes de documentos.

Quais são as vantagens das expressões switch em relação às instruções switch tradicionais em C#?

As expressões switch oferecem uma sintaxe mais concisa, eliminam a necessidade de instruções break-case e suportam atribuição direta de valores. Essas vantagens resultam em um código mais legível e de fácil manutenção, especialmente quando integradas a bibliotecas como o IronPDF para processamento e classificação de PDFs.

É possível usar expressões `switch` com correspondência de padrões em C#?

Sim, as expressões switch suportam vários padrões, incluindo correspondência de padrões, o que permite o tratamento versátil de cenários complexos. Essa funcionalidade pode ser aproveitada com ferramentas como o IronPDF para categorizar e processar documentos de forma eficiente.

Quais são algumas aplicações práticas de expressões switch em C#?

As expressões switch podem ser usadas em aplicações como classificação de documentos, processamento de dados e gerenciamento de lógica condicional. Com o IronPDF, elas podem ajudar a manipular documentos PDF dinamicamente, classificando-os com base em atributos específicos, como o número de páginas.

Como as expressões switch melhoram a legibilidade do código C#?

Expressões de seleção (switch) melhoram a legibilidade ao reduzir o código repetitivo e fornecer uma sintaxe concisa para o gerenciamento de condições. Elas permitem membros com corpo de expressão, tornando o código mais funcional e fácil de entender, principalmente quando usadas em conjunto com bibliotecas como o IronPDF.

Em qual versão do C# foram introduzidas as expressões switch?

As expressões switch foram introduzidas no C# 8.0. Esse recurso não está disponível em versões anteriores do C#, portanto, os desenvolvedores precisam garantir que seus projetos estejam direcionados ao C# 8.0 ou posterior para utilizar expressões switch de forma eficaz com bibliotecas como o IronPDF.

Qual é a característica mais marcante do IronPDF em relação às expressões switch?

O grande diferencial do IronPDF é sua capacidade de integração com expressões switch em C# para conversão de HTML em PDF, permitindo que desenvolvedores convertam conteúdo HTML em PDFs e os classifiquem com base em atributos como número de páginas, usando um tratamento conciso e dinâmico.

Como o IronPDF auxilia no processo de conversão de HTML para PDF?

O IronPDF oferece uma função de conversão de HTML para PDF que preserva layouts e estilos, permitindo a geração perfeita de PDFs a partir de conteúdo da web. Esse recurso é particularmente útil para a criação de relatórios, faturas e documentação, e pode ser aprimorado com expressões switch em C# para classificação.

Curtis Chau
Redator Técnico

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais ...

Leia mais

Equipe de suporte de ferro

Estamos online 24 horas por dia, 5 dias por semana.
Bater papo
E-mail
Liga para mim