Przejdź do treści stopki
POMOC .NET

C# Const (jak to działa dla programistów)

W języku C#, słowo kluczowe const jest potężnym narzędziem do definiowania stałych pól lub wartości, które są znane w czasie kompilacji. Te wartości są niezmienne, co oznacza, że po ustawieniu ich wartość nie może zostać zmieniona w całym programie. Użycie const może uczynić Twój kod bardziej czytelnym i łatwiejszym w utrzymaniu, zapewniając wyraźne wskazanie wartości, które mają pozostać stałe. W tym artykule omówimy słowo kluczowe const oraz bibliotekę IronPDF.

Deklarowanie Stałych Zmiennych

Aby zadeklarować stałą zmienną, użyj słowa kluczowego const po którym następuje typ danych, a następnie natychmiast ją zainicjuj. Na przykład, const int myConstValue = 100; definiuje stałą całkowitą. Warto zauważyć, że stała zmienna musi być zainicjowana w momencie deklaracji, ponieważ jej wartość jest przeznaczona na czas kompilacji i musi być w pełni oceniona przed uruchomieniem programu.

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

C# Const (Jak Działa dla Programistów): Rysunek 1 - Wyjście Const

Ten przykład ilustruje proste użycie stałej liczby całkowitej (const int) w klasie. Stała MaxSize jest dostępna w tej samej klasie i może być używana bezpośrednio w metodzie static void Main.

const vs. zmienne readonly

Podczas gdy zarówno słowa kluczowe const, jak i readonly są używane do deklarowania niezmiennych wartości, istnieją między nimi ważne różnice. Pole const to stała czasowa kompilacji, co oznacza, że jego wartość jest określana w czasie kompilacji i osadzana bezpośrednio w kodzie języka pośredniego (IL). To czyni je statycznym i nie można go zmodyfikować.

Z drugiej strony, zmienna readonly może być przypisana albo w momencie deklaracji, albo w konstruktorze klasy. Daje to pewną elastyczność, ponieważ pola readonly mogą mieć różne wartości w zależności od konstruktora użytego do zainicjowania klasy.

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

C# Const (Jak Działa dla Programistów): Rysunek 2 - Wyjście Pola Readonly

Zakres Zmiennych const

Stałe zmienne mogą być zadeklarowane w metodzie lub jako członek klasy. Kiedy deklarujesz zmienną const w metodzie, jest ona znana jako stała lokalna. Stałe lokalne są dostępne tylko w metodzie, w której są zadeklarowane.

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

C# Const (Jak Działa dla Programistów): Rysunek 3 - Wyjście Stałej Lokalnej

W przeciwieństwie do tego, kiedy const jest zadeklarowane w klasie, ale poza jakąkolwiek metodą, jest dostępne z dowolnej funkcji statycznej tej samej, ponieważ pola const są domyślnie statyczne. Jednak próba dostępu do pola const z metody instancji bez odniesienia do niego przez nazwę klasy spowoduje błąd kompilacji.

Stałe Czasu Kompilacji a Czasu Uruchomienia

Główną cechą wartości const jest to, że są one oceniane w czasie kompilacji. Oznacza to, że wartość pola const musi być znana i w pełni oceniona przez kompilator. Jest to w przeciwieństwie do zmiennych, które są oceniane w czasie uruchomienia, których wartości są określane podczas wykonywania programu.

Na przykład, próba przypisania wartości do pola const na podstawie obliczenia wykonanego w czasie uruchomienia spowoduje błąd kompilacji. Kompilator wymaga, aby wartości const były przypisywane z wyrażeń stałych lub wartości literalnych, które są znane w czasie kompilacji.

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

Zaawansowane użycie stałych i składowych statycznych w C

Poza podstawami const i readonly w C#, zrozumienie, jak pracować z wyrażeniami stałymi, konstruktorami statycznymi i polami statycznymi może podnieść Twoje praktyki kodowania, zwłaszcza gdy mamy do czynienia ze stałymi wartościami, które muszą być dzielone między instancje klasy.

Wyrażenia Stałe

Wyrażenie stałe w C# to wyrażenie, które może być w pełni ocenione w czasie kompilacji. Dlatego kiedy deklarujesz zmienną const, prawa strona jej deklaracji musi być wyrażeniem stałym. Zapewnia to, że wartość const jest ustalona i może być osadzona bezpośrednio w skompilowanym kodzie, prowadząc do wysoko zoptymalizowanych i wydajnych aplikacji.

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

W tym przykładzie, DoubleMultiplier jest wyrażeniem stałym, ponieważ jest obliczane przy użyciu innej wartości stałej, co czyni go kwalifikującym się jako stała czasowa kompilacji.

Konstruktor Statyczny

Konstruktor statyczny w C# to specjalny konstruktor, który inicjuje statyczne pola klasy. Jest wywoływany automatycznie przed utworzeniem pierwszej instancji lub odwołaniem się do jakichkolwiek członków statycznych. Konstruktory statyczne są przydatne do złożonej inicjalizacji danych statycznych lub do wykonywania działań, które muszą odbyć się raz na typ, a nie na instancję.

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

Statyczny konstruktor inicjuje pole StartTime z aktualnym czasem. Ta wartość jest następnie dostępna poprzez statyczną metodę DisplayStartTime, pokazując, w jaki sposób statyczne konstruktory mogą być używane do inicjalizacji pól readonly z wartościami, które nie są znane do czasu uruchomienia.

Pola Statyczne i słowa kluczowe readonly oraz static

Pola statyczne należą do klasy, a nie do jakiejkolwiek instancji klasy i są deklarowane przy użyciu słowa kluczowego static. W połączeniu ze słowem kluczowym readonly pole statyczne może być inicjowane albo w momencie deklaracji, albo wewnątrz konstruktora statycznego i nie może być modyfikowane później.

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

Ten przykład pokazuje użycie konstruktora, który jest statyczny do inicjalizacji pola statycznego readonly, MaxUsers, z wartością uzyskaną w czasie uruchomienia, być może z pliku konfiguracyjnego. Pole const, TimeoutSeconds, reprezentuje stałą czasową kompilacji, która jest bezpośrednio osadzona w kodzie.

Wprowadzenie do IronPDF

C# Const (Jak Działa dla Programistów): Rysunek 4 - IronPDF

IronPDF to wszechstronna biblioteka, która umożliwia programistom tworzenie, edytowanie i odczytywanie dokumentów PDF w aplikacjach .NET. To potężne narzędzie upraszcza generowanie PDF, umożliwiając programistom konwersję HTML na PDF, manipulację treścią i wydobywanie danych z plików PDF w prosty sposób.

Siła IronPDF leży w konwersji HTML na PDF, zachowując zarówno układ, jak i styl. Jest to idealne narzędzie do generowania PDF z treści internetowych, takich jak raporty, faktury i dokumentacja. Pliki HTML, URL i ciągi HTML można łatwo zamieniać na pliki 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

Rozpoczęcie Pracy z IronPDF i Przykład const

Aby pokazać, jak IronPDF może być zintegrowany z projektem .NET, przyjrzyjmy się prostemu przykładowi, w którym używamy stałej do zdefiniowania ciągu HTML, który chcemy przekonwertować na dokument 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

W tym przykładzie, stała HtmlTemplate jest zdefiniowana z prostą treścią HTML, która służy jako źródło dla naszego dokumentu PDF. Metoda CreatePdf wykorzystuje klasę ChromePdfRenderer IronPDF do konwersji tego HTML na PDF i zapisania go w określonej ścieżce pliku. To pokazuje łatwość, z jaką IronPDF może być używane do generowania PDF z statycznej zawartości HTML, korzystając ze słowa kluczowego const do definiowania niezmiennych szablonów HTML.

Wynik

Oto plik wyjściowy PDF:

C# Const (Jak Działa dla Programistów): Rysunek 5 - Wyjście PDF

Wnioski

C# Const (Jak Działa dla Programistów): Rysunek 6 - Licencjonowanie

W C#, słowo kluczowe const jest wartościową funkcją do definiowania niezmiennych wartości, które są znane w czasie kompilacji. Pomaga poprawić czytelność i łatwość utrzymania Twojego kodu, wyraźnie wskazując, które wartości są stałe. Pamiętaj, zmienne const są domyślnie statyczne, muszą być zainicjowane przy deklaracji, a ich wartości muszą być stałymi czasowymi kompilacji. Porównawczo, zmienne readonly oferują większą elastyczność, ale są inicjowane w czasie uruchomienia.

IronPDF odznacza się nie tylko potężnymi funkcjami w manipulacji PDF, ale także elastycznym modelem przyjęcia. Dla programistów i organizacji, które chcą zbadać jego możliwości, IronPDF oferuje bezpłatną wersję próbną, zapewniając doskonałą okazję do oceny jego funkcji i łatwości integracji bez początkowej inwestycji.

Gdy jesteś gotowy, by przejść dalej z IronPDF do celów komercyjnych, opcje licencjonowania zaczynają się od $799. Ta struktura cenowa została zaprojektowana, aby sprostać potrzebom różnych rozmiarów i typów projektów, zapewniając, że możesz wybrać licencję, która najlepiej odpowiada Twoim planom rozwoju i dystrybucji.

Często Zadawane Pytania

Jaki jest cel użycia słowa kluczowego const w C#?

W C# słowo kluczowe const jest używane do definiowania stałych pól lub wartości znanych w czasie kompilacji, czyniąc je niemutowalnymi w całym programie.

Jak zadeklarować zmienną stałą w C#?

Zmienna stała jest deklarowana za pomocą słowa kluczowego const poprzedzonego typem danych i wartością początkową. Na przykład, const int myConstValue = 100;.

Jaka jest różnica między const a readonly w C#?

const jest stałą czasu kompilacji i musi być zainicjalizowana podczas deklaracji. Jest statyczna i nie można jej zmodyfikować. Zmienna readonly może być przypisana podczas deklaracji lub wewnątrz konstruktora, co pozwala na inicjalizację w czasie wykonywania.

Czy zmienna const może być zadeklarowana wewnątrz metody w C#?

Tak, zmienna const może być zadeklarowana wewnątrz metody, znana jako lokalna stała, i jest dostępna tylko wewnątrz tej metody.

Jak IronPDF konwertuje HTML na PDF?

IronPDF konwertuje HTML na PDF używając klasy ChromePdfRenderer, która może renderować ciągi HTML, pliki lub adresy URL do dokumentów PDF.

Jak biblioteka może być używana z stałymi w C#?

IronPDF może używać stałych C#, takich jak stały ciąg szablonu HTML, do efektywnego generowania dokumentów PDF poprzez konwersję treści HTML na PDF.

Dlaczego używać IronPDF w aplikacjach .NET?

IronPDF służy do tworzenia, edytowania i odczytywania dokumentów PDF w aplikacjach .NET, upraszczając generowanie PDF poprzez konwersję HTML na PDF przy zachowaniu układu i stylu.

Czym są stałe czasu kompilacji w C#?

Stałe czasu kompilacji to wartości, które są oceniane i ustalane podczas kompilacji. Słowo kluczowe const zapewnia, że zmienna jest stałą czasu kompilacji.

Czym jest statyczny konstruktor w C#?

Statyczny konstruktor inicjalizuje statyczne pola klasy i jest wywoływany automatycznie przed utworzeniem instancji lub uzyskaniem dostępu do statycznych członków.

Czym jest wyrażenie stałe w C#?

Wyrażenie stałe to wyrażenie, które może być w pełni ocenione podczas kompilacji, co pozwala na użycie go w deklaracji const.

Jacob Mellor, Dyrektor Technologiczny @ Team Iron
Dyrektor ds. technologii

Jacob Mellor jest Chief Technology Officer w Iron Software i wizjonerskim inżynierem, pionierem technologii C# PDF. Jako pierwotny deweloper głównej bazy kodowej Iron Software, kształtuje architekturę produktów firmy od jej początku, przekształcając ją wspólnie z CEO Cameron Rimington w firmę liczą...

Czytaj więcej

Zespol wsparcia Iron

Jestesmy online 24 godziny, 5 dni w tygodniu.
Czat
Email
Zadzwon do mnie