.NET-HILFE

C# Primärkonstruktor (Wie es für Entwickler funktioniert)

Regan Pun
Regan Pun
14. Januar 2024
Teilen Sie:

In der objektorientierten Landschaft der C#-Programmierung bringt die Einführung von Primärkonstruktoren eine neue Ebene der Eleganz und Einfachheit in die Sprache. Primäre Konstruktoren sind neben Features wie Interceptern und Collection Expressions in C# 12 zu einem leistungsstarken Feature geworden, das eine prägnantere Syntax für die Deklaration von Konstruktoren mit Parametern bietet. Sie können die primären Konstruktoren in derMicrosoft C# Leitfaden.

In diesem Artikel lernen wir, wie man die primären Konstruktoren von C# 12 effizient einsetzt. Wir untersuchen ihre Funktionalität, Anwendungsfälle und wie sie die Art und Weise verändern, wie Entwickler an die Initialisierung von Klassen herangehen.

Die Grundlagen verstehen: Konstrukteure in C##

Konstruktoren spielen eine zentrale Rolle in der objektorientierten Programmierung, da sie als Entwurf für die Initialisierung von Objekten dienen. Traditionell haben C#-Entwickler den Standardkonstruktor oder parametrisierte Konstruktoren verwendet, um den Anfangszustand ihrer Klassen einzurichten. Mit der Einführung von Primärkonstruktoren wird dieser wesentliche Aspekt der C#-Entwicklung jedoch noch weiter vereinfacht.

Das Wesen der Primärkonstrukteure

Ein primärer Konstruktor in C# ist ein prägnanter Weg, um Eigenschaften direkt innerhalb der Klassendeklaration zu deklarieren und zu initialisieren. Sie vereinfacht den Prozess der Definition und Zuweisung von Werten zu Eigenschaften und bietet eine deklarative und lesbare Syntax.

Vorteile von Primärkonstrukteuren

  1. Kompaktheit: Primäre Konstruktoren bieten eine prägnante Syntax, die den Kesselsteincode reduziert und die Lesbarkeit verbessert.

  2. Scoping: Im Gegensatz zu traditionellen Konstruktoren sind Parameter in primären Konstruktoren für die gesamte Klasse oder Struktur gültig und bieten somit Flexibilität bei der Verwendung.

  3. Standardwerte: Standardparameterwerte vereinfachen die Objekterstellung und machen sie für Entwickler bequemer.

Deklaration eines Primärkonstruktors

Die Syntax für einen Primärkonstruktor beinhaltet die Deklaration der Eigenschaften direkt im Klassenkopf. Betrachten wir ein einfaches Beispiel der Klasse Person:

public class Person(string name, int age)
{
    public string Name { get; } = name;
    public int Age { get; } = age
    public override string ToString() => $"Name: {Name}, Age: {Age}";
}
public class Person(string name, int age)
{
    public string Name { get; } = name;
    public int Age { get; } = age
    public override string ToString() => $"Name: {Name}, Age: {Age}";
}

Im obigen Codeschnipsel hat die Klasse Person einen primären Konstruktor, der die Eigenschaften des Instanzmitglieds Name und des Instanzmitglieds Alter initialisiert. Die Konstruktorparameter werden mit dem Klassen- oder Strukturnamen deklariert und bei der Definition der öffentlichen Eigenschaften werden ihnen die Parameterwerte zugewiesen.

Beispiel 1: Unveränderlicher Punkt im 2D-Raum

public readonly struct Point(double x, double y)
{
    public double X { get; } = x;
    public double Y { get; } = y;
    public double Magnitude => Math.Sqrt(X * X + Y * Y);
}
public readonly struct Point(double x, double y)
{
    public double X { get; } = x;
    public double Y { get; } = y;
    public double Magnitude => Math.Sqrt(X * X + Y * Y);
}

In diesem Beispiel initialisiert der primäre Konstruktor für die Point-Struktur die Eigenschaften X und Y und zeigt, wie prägnant und ausdrucksstark die Syntax sein kann.

Beispiel 2: Konfigurierbarer Logger mit Standardeinstellungen

public class Logger(string filePath = "log.txt", LogLevel level = LogLevel.Info)
{
    private readonly string _filePath = filePath;
    private readonly LogLevel _level = level;
    public void Log(string message)
    {
        // Actual logging implementation using _filePath and _level
    }
}
public class Logger(string filePath = "log.txt", LogLevel level = LogLevel.Info)
{
    private readonly string _filePath = filePath;
    private readonly LogLevel _level = level;
    public void Log(string message)
    {
        // Actual logging implementation using _filePath and _level
    }
}

Hier bietet der primäre Konstruktor für die Klasse Logger Standardwerte für filePath und level, wodurch die Klasse flexibel und einfach zu verwenden ist und gleichzeitig konfigurierbar bleibt.

Beispiel 3: Dependency Injection

public interface IService
{
    Distance GetDistance();
}
public class ExampleController(IService service) : ControllerBase
{
    public ActionResult<Distance> Get() => service.GetDistance();
}
public interface IService
{
    Distance GetDistance();
}
public class ExampleController(IService service) : ControllerBase
{
    public ActionResult<Distance> Get() => service.GetDistance();
}

Primäre Konstrukteure eignen sich für Dependency-Injection-Szenarien. In diesem Beispiel zeigt eine Controllerklasse ihre Abhängigkeiten an, was die Wartbarkeit verbessert und das Testen von Einheiten erleichtert.

Beispiel 4: Aufbau einer geometrischen Formenhierarchie

public abstract class Shape(double width, double height)
{
    public double Width { get; } = width;
    public double Height { get; } = height;
    public abstract double CalculateArea();
}
public class Rectangle(double width, double height) : Shape(width, height)
{
    public override double CalculateArea() => Width * Height;
}
public class Circle : Shape
{
    public Circle(double radius) : base(radius * 2, radius * 2) { }
    public override double CalculateArea() => Math.PI * Math.Pow(Width / 2, 2);
}
public abstract class Shape(double width, double height)
{
    public double Width { get; } = width;
    public double Height { get; } = height;
    public abstract double CalculateArea();
}
public class Rectangle(double width, double height) : Shape(width, height)
{
    public override double CalculateArea() => Width * Height;
}
public class Circle : Shape
{
    public Circle(double radius) : base(radius * 2, radius * 2) { }
    public override double CalculateArea() => Math.PI * Math.Pow(Width / 2, 2);
}

In diesem Beispiel bildet der primäre Konstruktor in der Klasse Shape die Grundlage für eine geometrische Formenhierarchie. Unterklassen wie Rectangle und Circle nutzen den primären Konstruktor für eine konsistente Initialisierung. Die Klasse Rechteck deklariert selbst den primären Konstruktor und übergibt die erfassten primären Konstruktorparameter an die primären Parameter der Klasse Form. Die Klasse Circle zeigt ihre Flexibilität, indem sie ihren Konstruktor innerhalb der gesamten Klasse definiert und dann seine Parameter als Standardwerte für den Shape-Konstruktor mit dem Schlüsselwort base übergibt.

Einführung in IronPDF

IronPDF ist eine vielseitige C#-Bibliothek, die es Entwicklern ermöglicht, PDF-Dateien mühelos zu erstellen, zu bearbeiten und zu konvertieren. Egal, ob Sie Rechnungen, Berichte oder andere Dokumente erstellen, IronPDF ermöglicht Ihnen die nahtlose Konvertierung von HTML-Inhalten in ausgefeilte und professionelle PDFs direkt in Ihrer C#-Anwendung.

IronPDF ist ein praktisches Werkzeug für Entwickler, mit dem sie Webseiten, URLs undHTML zu PDF. Das Beste daran ist, dass die PDFs genau wie die ursprünglichen Webseiten aussehen, wobei alle Formatierungen und Stile erhalten bleiben. Es ist perfekt zum Erstellen von PDFs aus Webinhalten wie Berichten und Rechnungen.

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");
    }
}

C# Primär-Konstruktor(Wie es für Entwickler funktioniert): Abbildung 1 - IronPDF-Webseite

Installation von IronPDF: Ein Schnellstart

Um IronPDF in Ihr C#-Projekt einzubinden, installieren Sie zunächst das IronPDF NuGet-Paket. Führen Sie den folgenden Befehl in Ihrer Paketmanager-Konsole aus:

Install-Package IronPdf

Alternativ können Sie "IronPDF" im NuGet Package Manager suchen und von dort aus mit der Installation fortfahren.

C#-Primärkonstruktor (Wie es für Entwickler funktioniert): Abbildung 2 - Suche nach dem IronPDF-Paket im Browser des NuGet-Paketmanagers

Erzeugen von PDFs mit IronPDF

Die Erstellung einer PDF-Datei mit IronPDF ist ein rationalisierter Prozess. Betrachten Sie das folgende Beispiel:

var htmlContent = "<html><body><h1>Hello, IronPDF!</h1></body></html>";
// Create a new PDF document
var pdfDocument = new IronPdf.ChromePdfRenderer();
pdfDocument.RenderHtmlAsPdf(htmlContent).SaveAs("C:/GeneratedDocument.pdf");
var htmlContent = "<html><body><h1>Hello, IronPDF!</h1></body></html>";
// Create a new PDF document
var pdfDocument = new IronPdf.ChromePdfRenderer();
pdfDocument.RenderHtmlAsPdf(htmlContent).SaveAs("C:/GeneratedDocument.pdf");

In diesem Beispiel wird IronPDF verwendet, um HTML-Inhalte in ein PDF-Dokument umzuwandeln, das anschließend an einem bestimmten Ort gespeichert wird. Weitere Einzelheiten zur Erstellung und Bearbeitung von PDFs in C# finden Sie in diesem vollständigenTutorial-Link, und um mehr zu erfahren, besuchen Sie bitte dieseDokumentation seite.

C# Primäre Konstrukteure: Eine Revolution der Klasseninitialisierung

C#-Primärkonstruktoren bieten einen deklarativen und rationalisierten Ansatz zur Initialisierung von Klasseneigenschaften direkt in der Klassendeklaration. Lassen Sie uns untersuchen, ob diese elegante Funktion nahtlos in IronPDF integriert werden kann.

Integration von C# Primäre Konstrukteure mit IronPDF

Während C#-Primärkonstruktoren in erster Linie ein Sprachfeature sind, das sich auf die Klasseninitialisierung konzentriert, ist ihre direkte Integration in IronPDF möglicherweise kein gängiger Anwendungsfall. Die Kernfunktionalität von IronPDF liegt in der Erzeugung und Bearbeitung von PDF-Dokumenten, und die Besonderheiten der Klasseninitialisierung sind möglicherweise nicht direkt mit diesem Arbeitsablauf vereinbar.

Entwickler können jedoch C#-Primärkonstruktoren nutzen, wenn sie benutzerdefinierte Klassen oder Strukturen im Zusammenhang mit IronPDF-Konfigurationen oder Datenmodellen definieren. Wenn Ihre Anwendung zum Beispiel eine bestimmte Klassenstruktur benötigt, um PDF-bezogene Einstellungen oder Konfigurationen zu verwalten, können C#-Primärkonstruktoren ein wertvolles Werkzeug sein, um diese Klassen präzise zu initialisieren.

public class PdfGenerationSettings(string title, bool includeHeader, bool includeFooter)
{
    public string Title { get; } = title;
    public bool IncludeHeader { get; } = includeHeader;
    public bool IncludeFooter { get; } = includeFooter;
    // Additional properties...
}
// Usage with IronPDF
var pdfSettings = new PdfGenerationSettings("My PDF Title", true, false);
var renderOptions = new ChromePdfRenderOptions();
// Apply settings from PdfGenerationSettings
renderOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;
renderOptions.MarginTop = 20;
renderOptions.MarginBottom = 20;
renderOptions.MarginLeft = 10;
renderOptions.MarginRight = 10;
renderOptions.Title = pdfSettings.Title ?? string.Empty;
if (pdfSettings.IncludeHeader)
{
    renderOptions.TextHeader = new TextHeaderFooter
    {
        CenterText = "Page {page} of {total-pages}",
        DrawDividerLine = true
    };
}
var pdfDocument = new IronPdf.ChromePdfRenderer();
pdfDocument.RenderingOptions = renderOptions;
pdfDocument.RenderHtmlAsPdf("<html><body><h1>Hello, IronPDF!</h1></body></html>").SaveAs("CustomizedDocument.pdf");
public class PdfGenerationSettings(string title, bool includeHeader, bool includeFooter)
{
    public string Title { get; } = title;
    public bool IncludeHeader { get; } = includeHeader;
    public bool IncludeFooter { get; } = includeFooter;
    // Additional properties...
}
// Usage with IronPDF
var pdfSettings = new PdfGenerationSettings("My PDF Title", true, false);
var renderOptions = new ChromePdfRenderOptions();
// Apply settings from PdfGenerationSettings
renderOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;
renderOptions.MarginTop = 20;
renderOptions.MarginBottom = 20;
renderOptions.MarginLeft = 10;
renderOptions.MarginRight = 10;
renderOptions.Title = pdfSettings.Title ?? string.Empty;
if (pdfSettings.IncludeHeader)
{
    renderOptions.TextHeader = new TextHeaderFooter
    {
        CenterText = "Page {page} of {total-pages}",
        DrawDividerLine = true
    };
}
var pdfDocument = new IronPdf.ChromePdfRenderer();
pdfDocument.RenderingOptions = renderOptions;
pdfDocument.RenderHtmlAsPdf("<html><body><h1>Hello, IronPDF!</h1></body></html>").SaveAs("CustomizedDocument.pdf");

In diesem Beispiel verwendet die Klasse PdfGenerationSettings einen C#-Primärkonstruktor, um die Eigenschaften für die PDF-Erzeugungseinstellungen zu initialisieren. Damit lässt sich später herausfinden, welche Rendering-Optionen hinzugefügt und welche übersprungen werden sollen. Die Ausgabe enthält einen Kopftext und einen Titel, wie er mit dem primären Konstruktorparameter festgelegt wurde.

C# Primär-Konstruktor(Wie es für Entwickler funktioniert): Abbildung 3 - PDF-Ausgabe aus dem obigen Codebeispiel

Schlussfolgerung

Zusammenfassend lässt sich sagen, dass primäre Konstruktoren in C# einen verfeinerten und ausdrucksstarken Ansatz für die Klasseninitialisierung darstellen. Ihre deklarative Syntax verbessert die Lesbarkeit des Codes, fördert die Unveränderlichkeit und vereinfacht die Erstellung von Objekten mit Standardwerten. Egal, ob Sie Eigenschaften definieren, Unveränderlichkeit erzwingen oder Standardwerte verwenden, mit Primary Constructors können Entwickler die Kunst der Klasseninitialisierung in der dynamischen Welt der C#-Programmierung meistern.

Auch wenn die direkte Integration von C# Primary Constructors mit IronPDF nicht im Vordergrund steht, können diese beiden Elemente harmonisch zusammenarbeiten. C#-Primärkonstruktoren verbessern die Klarheit und Einfachheit der Klasseninitialisierung, was sie für die Definition von Strukturen oder Konfigurationen im Zusammenhang mit IronPDF-Workflows wertvoll macht.

Nutzen Sie die Leistungsfähigkeit von IronPDF für eine robuste PDF-Erzeugung und setzen Sie C#-Primärkonstruktoren ein, wenn es auf eine elegante Klasseninitialisierung ankommt. Dieses dynamische Duo versetzt Sie in die Lage, die Komplexität der Dokumentenerstellung mit Kreativität und Effizienz in der dynamischen Welt der C#-Programmierung zu bewältigen.

IronPDF bietet einekostenlos testen und seine LeichtigkeitLizenz beginnt mit $749.

Regan Pun
Software-Ingenieur
Regan schloss sein Studium an der University of Reading mit einem BA in Elektrotechnik ab. Bevor er zu Iron Software kam, konzentrierte er sich in seinen früheren Jobs auf einzelne Aufgaben. Was ihm bei Iron Software am meisten Spaß macht, ist das Spektrum der Aufgaben, die er übernehmen kann, sei es im Vertrieb, im technischen Support, in der Produktentwicklung oder im Marketing. Es macht ihm Spaß, die Art und Weise zu verstehen, wie Entwickler die Bibliothek von Iron Software nutzen, und dieses Wissen zu nutzen, um die Dokumentation und die Produkte kontinuierlich zu verbessern.
< PREVIOUS
Null-Koaleszenz-Operator C# (Wie er für Entwickler funktioniert)
NÄCHSTES >
C# Doppeltes Fragezeichen (Wie es für Entwickler funktioniert)