.NET-HILFE

C# Const (Wie es für Entwickler funktioniert)

Veröffentlicht 6. März 2024
Teilen Sie:

In C# wird eine const Schlüsselwort ist ein leistungsfähiges Werkzeug zur Definition konstanter Felder oder Werte, die zum Zeitpunkt der Kompilierung bekannt sind. Diese Werte sind unveränderlich, d.h. wenn sie einmal festgelegt sind, kann ihr Wert während des gesamten Programms nicht mehr geändert werden. Die Verwendung von const kann Ihren Code lesbarer und wartungsfreundlicher machen, da es einen klaren Hinweis auf Werte gibt, die konstant bleiben sollen. In diesem Artikel werden wir das Schlüsselwort const und IronPDF-Bibliothek.

Konstante Variablen deklarieren

Um eine konstante Variable zu deklarieren, verwenden Sie das Schlüsselwort const, gefolgt von einem Datentyp, und initialisieren sie dann sofort. Zum Beispiel definiert const int myConstValue = 100; eine Integer-Konstante. Es ist wichtig zu beachten, dass eine konstante Variable initialisiert werden muss, wenn sie deklariert wird, da ihr Wert zur Kompilierzeit und vollständig ausgewertet werden soll, bevor das Programm ausgeführt wird.

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
VB   C#

C# Konst (Wie es für Entwickler funktioniert): Abbildung 1 - Const-Ausgabe

Dieses Beispiel veranschaulicht eine einfache Verwendung einer konstanten Ganzzahl (const int) innerhalb einer Klasse. Die Konstante MaxSize ist innerhalb der gleichen Klasse zugänglich und kann direkt in der Methode static void Main verwendet werden.

const vs. readonly-Variablen

Die Schlüsselwörter const und readonly werden zwar beide verwendet, um unveränderliche Werte zu deklarieren, aber es gibt wichtige Unterschiede zwischen ihnen. Ein const-Feld ist eine Kompilierzeitkonstante, d.h. sein Wert wird zur Kompilierzeit bestimmt und direkt in die Intermediate Language eingebettet (IL) code. Damit ist sie statisch und kann nicht geändert werden.

Andererseits kann eine lesbare Variable entweder zum Zeitpunkt der Deklaration oder innerhalb eines Konstruktors der Klasse zugewiesen werden. Dies ermöglicht eine gewisse Flexibilität, da lesbare Felder je nach dem Konstruktor, der zur Instanzierung der Klasse verwendet wird, unterschiedliche Werte haben können.

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
VB   C#

C# Konst (Wie es für Entwickler funktioniert): Abbildung 2 - Ausgabe von Readonly-Feldern

Anwendungsbereich von const-Variablen

Konstante Variablen können innerhalb einer Methode oder als Mitglied einer Klasse deklariert werden. Wenn Sie eine const-Variable innerhalb einer Methode deklarieren, wird sie als lokale Konstante bezeichnet. Lokale Konstanten sind nur innerhalb der Methode zugänglich, in der sie deklariert sind.

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
VB   C#

C# Konst (Wie es für Entwickler funktioniert): Abbildung 3 - Lokale Konstantenausgabe

Im Gegensatz dazu ist ein const, das innerhalb einer Klasse, aber außerhalb einer Methode deklariert wird, von jeder statischen Funktion derselben Klasse aus zugänglich, da const-Felder implizit statisch sind. Der Versuch, von einer Instanzmethode aus auf ein const-Feld zuzugreifen, ohne es über den Klassennamen zu referenzieren, führt jedoch zu einem Kompilierungsfehler.

Kompilierzeit vs. Laufzeitkonstanten

Das Hauptmerkmal von const-Werten ist, dass sie zur Kompilierzeit ausgewertet werden. Das bedeutet, dass der Wert eines const-Feldes bekannt sein und vom Compiler vollständig ausgewertet werden muss. Dies steht im Gegensatz zu Variablen, die zur Laufzeit ausgewertet werden und deren Werte während der Ausführung des Programms bestimmt werden.

Beispielsweise führt der Versuch, einem const-Feld einen Wert zuzuweisen, der auf einer zur Laufzeit durchgeführten Berechnung basiert, zu einem Kompilierfehler. Der Compiler verlangt, dass const-Werte aus konstanten Ausdrücken oder literalen Werten zugewiesen werden, die zur Kompilierzeit bekannt sind.

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
VB   C#

Fortgeschrittene Verwendung von Konstanten und statischen Mitgliedern in C#

Über die Grundlagen von const und readonly in C# hinaus kann das Verständnis für die Arbeit mit konstanten Ausdrücken, statischen Konstruktoren und statischen Feldern Ihre Codierungspraktiken verbessern, insbesondere beim Umgang mit konstanten Werten, die über Instanzen einer Klasse hinweg gemeinsam genutzt werden müssen.

Konstante Ausdrücke

Ein konstanter Ausdruck in C# ist ein Ausdruck, der zur Kompilierzeit vollständig ausgewertet werden kann. Wenn Sie also eine const-Variable deklarieren, muss die rechte Seite der Deklaration ein konstanter Ausdruck sein. Dadurch wird sichergestellt, dass der const-Wert fest ist und direkt in den kompilierten Code eingebettet werden kann, was zu hoch optimierten und effizienten Anwendungen führt.

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
VB   C#

In diesem Beispiel ist DoubleMultiplier ein konstanter Ausdruck, da er unter Verwendung eines anderen konstanten Wertes berechnet wird, was ihn zu einer Kompilierzeitkonstante macht.

Statischer Konstrukteur

Ein statischer Konstruktor in C# ist ein spezieller Konstruktor, der statische Felder der Klasse initialisiert. Sie wird automatisch aufgerufen, bevor die erste Instanz erstellt wird oder auf statische Mitglieder verwiesen wird. Statische Konstruktoren sind nützlich für die komplexe Initialisierung von statischen Daten oder für die Durchführung von Aktionen, die einmal pro Typ und nicht pro Instanz ausgeführt werden müssen.

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
VB   C#

Der statische Konstruktor initialisiert das Feld StartTime mit der aktuellen Zeit. Auf diesen Wert kann dann über die statische Methode DisplayStartTime zugegriffen werden. Dies zeigt, wie statische Konstruktoren verwendet werden können, um schreibgeschützte Felder mit Werten zu initialisieren, die erst zur Laufzeit bekannt sind.

Statische Felder und die Schlüsselwörter readonly und static

Statische Felder gehören zur Klasse und nicht zu einer Instanz der Klasse und werden mit dem Schlüsselwort static deklariert. In Verbindung mit dem Schlüsselwort readonly kann ein statisches Feld entweder bei der Deklaration oder in einem statischen Konstruktor initialisiert werden und kann danach nicht mehr geändert werden.

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
VB   C#

Dieses Beispiel demonstriert die Verwendung eines statischen Konstruktors zur Initialisierung des statischen Feldes MaxUsers (schreibgeschützt) mit einem Wert, der zur Laufzeit abgerufen wird, möglicherweise aus einer Konfigurationsdatei. Das Feld const, TimeoutSeconds, stellt eine Kompilierzeitkonstante dar, die direkt in den Code eingebettet ist.

Einführung in IronPDF

C# Konst (Wie es für Entwickler funktioniert): Abbildung 4 - IronPDF

IronPDF ist eine vielseitige Bibliothek, mit der Entwickler PDF-Dokumente in .NET-Anwendungen erstellen, bearbeiten und lesen können. Dieses leistungsstarke Werkzeug vereinfacht die PDF-Erstellung, indem es Entwicklern ermöglicht hTML in PDF konvertieren, inhalte zu manipulieren und Daten aus PDF-Dateien zu extrahieren.

Die Stärke von IronPDF liegt in der Konvertierung HTML zu PDF, Layout und Stil bewahrend. Es ist ein ideales Werkzeug zur Erstellung von PDFs aus Web-Inhalten wie Berichten, Rechnungen und Dokumentationen. HTML-Dateien, URLs und HTML-Strings können einfach in PDF-Dateien konvertiert werden.

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#

Erste Schritte mit IronPDF und Konst-Beispiel

Um zu demonstrieren, wie IronPDF in ein .NET-Projekt integriert werden kann, sehen wir uns ein einfaches Beispiel an, in dem wir eine Konstante verwenden, um die HTML-Zeichenfolge zu definieren, die wir in ein PDF-Dokument umwandeln wollen.

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
VB   C#

In diesem Beispiel wird die Konstante HtmlTemplate mit einem einfachen HTML-Inhalt definiert, der als Quelle für unser PDF-Dokument dient. Die Methode CreatePdf verwendet die Klasse ChromePdfRenderer von IronPDF, um dieses HTML in ein PDF zu konvertieren und es im angegebenen Dateipfad zu speichern. Dies zeigt, wie einfach IronPDF PDFs aus statischen HTML-Inhalten erzeugen kann, indem es das Schlüsselwort const zur Definition unveränderlicher HTML-Vorlagen nutzt.

Ausgabe

Hier ist die Output-PDF-Datei:

C# Konst (Wie es für Entwickler funktioniert): Abbildung 5 - PDF-Ausgabe

Schlussfolgerung

C# Konst (Wie es für Entwickler funktioniert): Abbildung 6 - Lizenzierung

In C# ist das Schlüsselwort const eine wertvolle Funktion zur Definition unveränderlicher Werte, die zur Kompilierungszeit bekannt sind. Es trägt dazu bei, die Lesbarkeit und Wartbarkeit Ihres Codes zu verbessern, indem es eindeutig angibt, welche Werte Konstanten sind. Denken Sie daran, dass const-Variablen implizit statisch sind, bei der Deklaration initialisiert werden müssen und ihre Werte zur Kompilierzeit Konstanten sein müssen. Im Vergleich dazu bieten readonly-Variablen mehr Flexibilität, werden aber zur Laufzeit initialisiert.

IronPDF zeichnet sich nicht nur durch seine robusten Funktionen zur PDF-Bearbeitung aus, sondern auch durch sein flexibles Anwendungsmodell. Für Entwickler und Organisationen, die die Möglichkeiten von IronPDF erkunden möchten, bietet IronPDF eine kostenloser Testund bietet eine hervorragende Gelegenheit, die Funktionen und die einfache Integration ohne Anfangsinvestitionen zu testen.

Wenn Sie bereit sind, IronPDF für die kommerzielle Nutzung zu nutzen, beginnen die Lizenzierungsoptionen bei $749. Diese Preisstruktur ist so konzipiert, dass sie den Anforderungen unterschiedlicher Projektgrößen und -typen gerecht wird, so dass Sie eine Lizenz wählen können, die Ihren Entwicklungs- und Vertriebsplänen am besten entspricht.

< PREVIOUS
C# Thread Sleep-Methode (Wie es funktioniert für Entwickler)
NÄCHSTES >
RabbitMQ C# (Wie es für Entwickler funktioniert)

Sind Sie bereit, loszulegen? Version: 2024.10 gerade veröffentlicht

Gratis NuGet-Download Downloads insgesamt: 11,308,499 Lizenzen anzeigen >