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

Const em C# (Como funciona para desenvolvedores)

Em C#, a palavra-chave const é uma ferramenta poderosa para definir campos ou valores constantes que são conhecidos em tempo de compilação. Esses valores são imutáveis, o que significa que, uma vez definidos, seu valor não pode ser alterado durante a execução do programa. Utilizar const pode tornar seu código mais legível e fácil de manter, fornecendo uma indicação clara dos valores que devem permanecer constantes. Neste artigo, discutiremos a palavra-chave const e a biblioteca IronPDF .

Declaração de variáveis ​​constantes

Para declarar uma variável constante, você usa a palavra-chave const seguida por um tipo de dado e, em seguida, a inicializa imediatamente. Por exemplo, const int myConstValue = 100; define uma constante inteira. É importante notar que uma variável constante deve ser inicializada quando é declarada, pois seu valor deve ser determinado em tempo de compilação e totalmente avaliado antes da execução do programa.

public class Program
{
    public const int MaxSize = 10;

    static void Main(string[] args)
    {
        Console.WriteLine(MaxSize);
    }
}
public class Program
{
    public const int MaxSize = 10;

    static void Main(string[] args)
    {
        Console.WriteLine(MaxSize);
    }
}
Public Class Program
	Public Const MaxSize As Integer = 10

	Shared Sub Main(ByVal args() As String)
		Console.WriteLine(MaxSize)
	End Sub
End Class
$vbLabelText   $csharpLabel

Const em C# (Como funciona para desenvolvedores): Figura 1 - Saída de const

Este exemplo ilustra um uso simples de um número inteiro constante ( const int ) dentro de uma classe. A constante MaxSize é acessível dentro da mesma classe e pode ser usada diretamente no método estático void Main .

Variáveis ​​const vs. readonly

Embora as palavras-chave const e readonly sejam usadas para declarar valores imutáveis, existem diferenças importantes entre elas. Um campo const é uma constante de tempo de compilação, o que significa que seu valor é determinado em tempo de compilação e incorporado diretamente no código da Linguagem Intermediária (IL). Isso torna o valor estático e impossível de ser modificado.

Por outro lado, uma variável somente leitura pode ser atribuída tanto no momento da declaração quanto dentro de um construtor da classe. Isso permite alguma flexibilidade, já que os campos somente leitura podem ter valores diferentes dependendo do construtor usado para instanciar a classe.

public class Program
{
    public const string ConstExample = "Constant"; // const string
    public readonly string ReadonlyExample;

    public Program()
    {
        ReadonlyExample = "Initialized at runtime";
    }

    static void Main(string[] args)
    {
        Program p = new Program();
        Console.WriteLine(ConstExample);
        Console.WriteLine(p.ReadonlyExample);
    }
}
public class Program
{
    public const string ConstExample = "Constant"; // const string
    public readonly string ReadonlyExample;

    public Program()
    {
        ReadonlyExample = "Initialized at runtime";
    }

    static void Main(string[] args)
    {
        Program p = new Program();
        Console.WriteLine(ConstExample);
        Console.WriteLine(p.ReadonlyExample);
    }
}
Public Class Program
	Public Const ConstExample As String = "Constant" ' const string
	Public ReadOnly ReadonlyExample As String

	Public Sub New()
		ReadonlyExample = "Initialized at runtime"
	End Sub

	Shared Sub Main(ByVal args() As String)
		Dim p As New Program()
		Console.WriteLine(ConstExample)
		Console.WriteLine(p.ReadonlyExample)
	End Sub
End Class
$vbLabelText   $csharpLabel

Constante C# (Como funciona para desenvolvedores): Figura 2 - Saída de campo somente leitura

Escopo das variáveis ​​constantes

Variáveis ​​constantes podem ser declaradas dentro de um método ou como membro de uma classe. Quando você declara uma variável constante dentro de um método, ela é conhecida como constante local. As constantes locais só podem ser acessadas dentro do método em que foram declaradas.

public class Program
{
    static void DemoMethod()
    {
        const int LocalConst = 5; // local constant
        Console.WriteLine(LocalConst);
    }
}
public class Program
{
    static void DemoMethod()
    {
        const int LocalConst = 5; // local constant
        Console.WriteLine(LocalConst);
    }
}
Public Class Program
	Private Shared Sub DemoMethod()
		Const LocalConst As Integer = 5 ' local constant
		Console.WriteLine(LocalConst)
	End Sub
End Class
$vbLabelText   $csharpLabel

Constante C# (Como funciona para desenvolvedores): Figura 3 - Saída de constante local

Em contrapartida, quando uma constante é declarada dentro de uma classe, mas fora de qualquer método, ela é acessível a partir de qualquer função estática da mesma classe, porque os campos constantes são implicitamente estáticos. No entanto, tentar acessar um campo constante a partir de um método de instância sem referenciá-lo através do nome da classe resultará em um erro de compilação.

Constantes de tempo de compilação versus constantes de tempo de execução

A principal característica dos valores constantes é que eles são avaliados em tempo de compilação. Isso significa que o valor de um campo constante deve ser conhecido e totalmente avaliado pelo compilador. Isso contrasta com as variáveis ​​que são avaliadas em tempo de execução, cujos valores são determinados durante a execução do programa.

Por exemplo, tentar atribuir um valor a um campo constante com base em um cálculo realizado em tempo de execução causará um erro de compilação. O compilador exige que os valores constantes sejam atribuídos a partir de expressões constantes ou valores literais que sejam conhecidos em tempo de compilação.

const double Pi = Math.PI; // This will cause a compile time error
const double Pi = Math.PI; // This will cause a compile time error
Const Pi As Double = Math.PI ' This will cause a compile time error
$vbLabelText   $csharpLabel

Uso avançado de constantes e membros estáticos em C

Além dos conceitos básicos de const e readonly em C#, entender como trabalhar com expressões constantes, construtores estáticos e campos estáticos pode aprimorar suas práticas de programação, especialmente ao lidar com valores constantes que precisam ser compartilhados entre instâncias de uma classe.

Expressões constantes

Uma expressão constante em C# é uma expressão que pode ser totalmente avaliada em tempo de compilação. Portanto, ao declarar uma variável const , o lado direito da declaração deve ser uma expressão constante. Isso garante que o valor constante seja fixo e possa ser incorporado diretamente no código compilado, resultando em aplicações altamente otimizadas e eficientes.

public class Calculator
{
    public const int Multiplier = 2;
    public const int DoubleMultiplier = Multiplier * 2; // Constant expression
}
public class Calculator
{
    public const int Multiplier = 2;
    public const int DoubleMultiplier = Multiplier * 2; // Constant expression
}
Public Class Calculator
	Public Const Multiplier As Integer = 2
	Public Const DoubleMultiplier As Integer = Multiplier * 2 ' Constant expression
End Class
$vbLabelText   $csharpLabel

Neste exemplo, DoubleMultiplier é uma expressão constante porque é calculada usando outro valor constante, o que a torna elegível para ser uma constante em tempo de compilação.

Construtor Estático

Um construtor estático em C# é um construtor especial que inicializa os campos estáticos da classe. É chamado automaticamente antes da criação da primeira instância ou de qualquer referência a membros estáticos. Construtores estáticos são úteis para inicialização complexa de dados estáticos ou para executar ações que precisam ocorrer uma única vez por tipo, em vez de por instância.

public class Program
{
    public static readonly string StartTime;

    static Program()
    {
        StartTime = DateTime.Now.ToString("T");
    }

    public static void DisplayStartTime()
    {
        Console.WriteLine($"Program started at: {StartTime}");
    }
}
public class Program
{
    public static readonly string StartTime;

    static Program()
    {
        StartTime = DateTime.Now.ToString("T");
    }

    public static void DisplayStartTime()
    {
        Console.WriteLine($"Program started at: {StartTime}");
    }
}
Public Class Program
	Public Shared ReadOnly StartTime As String

	Shared Sub New()
		StartTime = DateTime.Now.ToString("T")
	End Sub

	Public Shared Sub DisplayStartTime()
		Console.WriteLine($"Program started at: {StartTime}")
	End Sub
End Class
$vbLabelText   $csharpLabel

O construtor estático inicializa o campo StartTime com a hora atual. Esse valor fica então acessível através do método estático DisplayStartTime , demonstrando como construtores estáticos podem ser usados ​​para inicializar campos somente leitura com valores que só serão conhecidos em tempo de execução.

Campos estáticos e as palavras-chave somente leitura e estáticas

Os campos estáticos pertencem à classe, e não a qualquer instância da classe, e são declarados usando a palavra-chave static . Quando combinado com a palavra-chave readonly , um campo estático pode ser inicializado no momento da declaração ou dentro de um construtor estático e não pode ser modificado posteriormente.

public class Configuration
{
    public static readonly int MaxUsers;
    public const int TimeoutSeconds = 30;

    static Configuration()
    {
        MaxUsers = FetchMaxUsersFromConfig();
    }

    private static int FetchMaxUsersFromConfig()
    {
        // Imagine this method reads from a configuration file
        return 100;
    }
}
public class Configuration
{
    public static readonly int MaxUsers;
    public const int TimeoutSeconds = 30;

    static Configuration()
    {
        MaxUsers = FetchMaxUsersFromConfig();
    }

    private static int FetchMaxUsersFromConfig()
    {
        // Imagine this method reads from a configuration file
        return 100;
    }
}
Public Class Configuration
	Public Shared ReadOnly MaxUsers As Integer
	Public Const TimeoutSeconds As Integer = 30

	Shared Sub New()
		MaxUsers = FetchMaxUsersFromConfig()
	End Sub

	Private Shared Function FetchMaxUsersFromConfig() As Integer
		' Imagine this method reads from a configuration file
		Return 100
	End Function
End Class
$vbLabelText   $csharpLabel

Este exemplo demonstra o uso de um construtor estático para inicializar um campo estático somente leitura , **MaxUsers , com um valor que é obtido em tempo de execução, possivelmente de um arquivo de configuração. O campo constante , TimeoutSeconds** , representa uma constante de tempo de compilação que é incorporada diretamente ao código.

Introdução ao IronPDF

Constante C# (Como funciona para desenvolvedores): Figura 4 - IronPDF

IronPDF é uma biblioteca versátil que permite aos desenvolvedores criar, editar e ler documentos PDF em aplicações .NET . Essa poderosa ferramenta simplifica a geração de PDFs, permitindo que os desenvolvedores convertam HTML em PDF, manipulem o conteúdo e extraiam dados de arquivos PDF com facilidade.

A principal vantagem do IronPDF reside na conversão de HTML para PDF , preservando tanto o layout quanto o estilo. É uma ferramenta ideal para gerar PDFs a partir de conteúdo da web, como relatórios, faturas e documentação. Arquivos HTML, URLs e strings HTML podem ser facilmente convertidos em arquivos 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
$vbLabelText   $csharpLabel

Introdução ao IronPDF e exemplo de const

Para demonstrar como o IronPDF pode ser integrado a um projeto .NET , vejamos um exemplo simples onde usamos uma constante para definir a string HTML que queremos converter em um documento PDF.

using IronPdf;

public class PdfGenerator
{
    // Defining a constant HTML template
    public const string HtmlTemplate = @"
        <html>
            <head>
                <title>PDF Report</title>
            </head>
            <body>
                <h1>IronPDF Report</h1>
                <p>This is a simple PDF document generated from HTML string using IronPDF.</p>
            </body>
        </html>";

    public static void CreatePdf(string filePath)
    {
        IronPdf.License.LicenseKey = "License";

        // Create a new PDF document from HTML template
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(HtmlTemplate);

        // Save the PDF document to a file
        pdf.SaveAs(filePath);
        Console.WriteLine($"PDF generated successfully at {filePath}");
    }
}

class Program
{
    static void Main(string[] args)
    {
        PdfGenerator.CreatePdf("example.pdf");
    }
}
using IronPdf;

public class PdfGenerator
{
    // Defining a constant HTML template
    public const string HtmlTemplate = @"
        <html>
            <head>
                <title>PDF Report</title>
            </head>
            <body>
                <h1>IronPDF Report</h1>
                <p>This is a simple PDF document generated from HTML string using IronPDF.</p>
            </body>
        </html>";

    public static void CreatePdf(string filePath)
    {
        IronPdf.License.LicenseKey = "License";

        // Create a new PDF document from HTML template
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(HtmlTemplate);

        // Save the PDF document to a file
        pdf.SaveAs(filePath);
        Console.WriteLine($"PDF generated successfully at {filePath}");
    }
}

class Program
{
    static void Main(string[] args)
    {
        PdfGenerator.CreatePdf("example.pdf");
    }
}
Imports IronPdf

Public Class PdfGenerator
	' Defining a constant HTML template
	Public Const HtmlTemplate As String = "
        <html>
            <head>
                <title>PDF Report</title>
            </head>
            <body>
                <h1>IronPDF Report</h1>
                <p>This is a simple PDF document generated from HTML string using IronPDF.</p>
            </body>
        </html>"

	Public Shared Sub CreatePdf(ByVal filePath As String)
		IronPdf.License.LicenseKey = "License"

		' Create a new PDF document from HTML template
		Dim renderer = New ChromePdfRenderer()
		Dim pdf = renderer.RenderHtmlAsPdf(HtmlTemplate)

		' Save the PDF document to a file
		pdf.SaveAs(filePath)
		Console.WriteLine($"PDF generated successfully at {filePath}")
	End Sub
End Class

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		PdfGenerator.CreatePdf("example.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel

Neste exemplo, a constante HtmlTemplate é definida com conteúdo HTML simples que serve como fonte para o nosso documento PDF. O método CreatePdf utiliza a classe ChromePdfRenderer do IronPDF para converter este HTML em um PDF e salvá-lo no caminho de arquivo especificado. Isso demonstra a facilidade com que o IronPDF pode ser usado para gerar PDFs a partir de conteúdo HTML estático, aproveitando a palavra-chave const para definir modelos HTML imutáveis.

Saída

Aqui está o arquivo PDF gerado:

Constante C# (Como funciona para desenvolvedores): Figura 5 - Saída em PDF

Conclusão

Constante C# (Como funciona para desenvolvedores): Figura 6 - Licenciamento

Em C#, a palavra-chave const é um recurso valioso para definir valores imutáveis ​​que são conhecidos em tempo de compilação. Ela ajuda a melhorar a legibilidade e a manutenção do seu código, indicando claramente quais valores são constantes. Lembre-se: variáveis ​​const são implicitamente estáticas, devem ser inicializadas na declaração e seus valores devem ser constantes em tempo de compilação. Em comparação, as variáveis ​​somente leitura oferecem mais flexibilidade, mas são inicializadas em tempo de execução.

O IronPDF se destaca não apenas por seus recursos robustos de manipulação de PDFs, mas também por seu modelo de adoção flexível. Para desenvolvedores e organizações que desejam explorar suas funcionalidades, o IronPDF oferece um período de teste gratuito , proporcionando uma excelente oportunidade para avaliar seus recursos e facilidade de integração sem investimento inicial.

Quando estiver pronto para usar o IronPDF para fins comerciais, as opções de licenciamento começam em $799. Essa estrutura de preços foi projetada para atender às necessidades de projetos de diferentes tamanhos e tipos, garantindo que você possa escolher a licença que melhor se adapte aos seus planos de desenvolvimento e distribuição.

Perguntas frequentes

Qual é a finalidade da palavra-chave `const` em C#?

Em C#, a palavra-chave const é usada para definir campos ou valores constantes conhecidos em tempo de compilação, tornando-os imutáveis em todo o programa.

Como declarar uma variável constante em C#?

Uma variável constante é declarada usando a palavra-chave const seguida por um tipo de dados e um valor inicial. Por exemplo, const int myConstValue = 100; .

Qual a diferença entre `const` e `readonly` em C#?

Uma const é uma constante de tempo de compilação e deve ser inicializada na declaração. Ela é estática e não pode ser modificada. Uma variável readonly pode ser atribuída no momento da declaração ou dentro de um construtor, permitindo a inicialização em tempo de execução.

É possível declarar uma variável constante dentro de um método em C#?

Sim, uma variável const pode ser declarada dentro de um método, sendo conhecida como constante local, e só é acessível dentro desse método.

Como o IronPDF converte HTML em PDF?

O IronPDF converte HTML em PDF usando a classe ChromePdfRenderer , que pode renderizar strings HTML, arquivos ou URLs em documentos PDF.

Como uma biblioteca pode ser usada com constantes em C#?

O IronPDF pode usar constantes C#, como uma string de modelo HTML constante, para gerar documentos PDF convertendo conteúdo HTML em PDFs de forma eficiente.

Por que usar o IronPDF em aplicações .NET?

O IronPDF é usado para criar, editar e ler documentos PDF em aplicações .NET, simplificando a geração de PDFs ao converter HTML em PDF, preservando o layout e o estilo.

O que são constantes de tempo de compilação em C#?

Constantes de tempo de compilação são valores que são avaliados e fixados durante a compilação. A palavra-chave const garante que uma variável seja uma constante de tempo de compilação.

O que é um construtor estático em C#?

Um construtor estático inicializa os campos estáticos de uma classe e é chamado automaticamente antes que qualquer instância seja criada ou que membros estáticos sejam acessados.

O que é uma expressão constante em C#?

Uma expressão constante é uma expressão que pode ser totalmente avaliada em tempo de compilação, permitindo que seja usada em uma declaração const .

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