
C# Primärkonstruktor (Wie es für Entwickler funktioniert)
In der objektorientierten Landschaft der C#-Programmierung bringt die Einführung von Primary Constructors ein neues Maß an Eleganz und Einfachheit in die Sprache. Primary Constructors, zusammen mit Funktionen wie Interceptoren und Sammlungsausdrücken, tauchten in C# 12 als leistungsstarkes Feature auf, das eine prägnantere Syntax für die Deklaration von Konstruktoren mit Parametern bietet. Sie können Primary Constructors ausführlich im Microsoft C#-Leitfaden erkunden.
In diesem Artikel lernen wir, wie man C# 12 Primary Constructors effizient einsetzt und auch ihre Funktionalität, Anwendungsfälle und wie sie die Art und Weise verändern, wie Entwickler die Initialisierung von Klassen angehen, erkunden.
Understanding the Basics: Constructors in C#
Konstruktoren spielen eine entscheidende Rolle in der objektorientierten Programmierung, indem sie als Vorlage für die Initialisierung von Objekten dienen. Traditionell haben C#-Entwickler den Standardkonstruktor oder parameterisierte Konstruktoren verwendet, um den Anfangszustand ihrer Klassen festzulegen. Die Einführung von Primary Constructors fügt jedoch diesem wesentlichen Aspekt der C#-Entwicklung einen optimierteren Ansatz hinzu.
Das Wesentliche der primären Konstruktoren
Ein Primary Constructor in C# ist eine prägnante Möglichkeit, Eigenschaften direkt innerhalb der Klassendeklaration zu deklarieren und zu initialisieren. Er vereinfacht den Prozess der Definition und Zuweisung von Werten zu Eigenschaften und bietet eine deklarativere und lesbarere Syntax.
Vorteile von Primärkonstruktoren
- Prägnanz: Primary Constructors bieten eine knappe Syntax, reduzieren Boilerplate-Code und verbessern die Lesbarkeit.
- Bereich: Im Gegensatz zu traditionellen Konstruktoren sind Parameter in Primary Constructors im gesamten Bereich der Klasse oder Struktur verfügbar, was Flexibilität in ihrer Verwendung bietet.
- Standardwerte: Standardparameterwerte vereinfachen die Objekterstellung und machen sie für Entwickler bequemer.
Deklarieren eines primären Konstruktors
Die Syntax für einen Primary Constructor beinhaltet die Deklaration der Eigenschaften direkt im Klassenkopf. Betrachten wir ein einfaches Person Klassenbeispiel:
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, Integer age)
Public ReadOnly Property Name() As String = name
Public ReadOnly Property Age() As Integer = age
Public Overrides Function ToString() As String
Return $"Name: {Name}, Age: {Age}"
End Function
End ClassIm obigen Codeausschnitt hat die Person-Klasse einen Primary Constructor, der die Instanzmember Name und Alter initialisiert. Die Konstruktorparameter werden mit dem Klassen- oder Strukturennamen deklariert, und zum Zeitpunkt der Definition öffentlicher Eigenschaften werden die Parameterwerte ihnen 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);
}'INSTANT VB WARNING: VB has no equivalent to the C# readonly struct:
'ORIGINAL LINE: public readonly struct Point(double x, double y)
Public Structure Point(Double x, Double y)
Public ReadOnly Property X() As Double = x
Public ReadOnly Property Y() As Double = y
Public ReadOnly Property Magnitude() As Double
Get
Return Math.Sqrt(X * X + Y * Y)
End Get
End Property
End StructureIn diesem Beispiel initialisiert der Primary Constructor für die Punkt-Struktur die Eigenschaften X und Y und zeigt, wie prägnant und expressiv 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
}
}'INSTANT VB TODO TASK: The following line contains an assignment within expression that was not extracted by Instant VB:
'ORIGINAL LINE: public class Logger(string filePath = "log.txt", LogLevel level = LogLevel.Info)
Public Class Logger(String filePath = "log.txt", LogLevel level = LogLevel.Info)
Private ReadOnly _filePath As String = filePath
Private ReadOnly _level As LogLevel = level
Public Sub Log(ByVal message As String)
' Actual logging implementation using _filePath and _level
End Sub
End ClassHier bietet der Primary Constructor für die Logger-Klasse Standardwerte für filePath und level, macht ihn flexibel und einfach zu verwenden, während er die Konfigurierbarkeit beibehält.
Beispiel 3: Dependency Injection
public interface IService
{
Distance GetDistance();
}
public class ExampleController(IService service) : ControllerBase
{
public ActionResult<Distance> Get() => service.GetDistance();
}Public Interface IService
Function GetDistance() As Distance
End Interface
Public Class ExampleController(IService service)
Inherits ControllerBase
Public Function [Get]() As ActionResult(Of Distance)
Return service.GetDistance()
End Function
End ClassPrimary Constructors eignen sich für Szenarien mit Dependency Injection. In diesem Beispiel zeigt eine Controller-Klasse ihre Abhängigkeiten an, verbessert die Wartbarkeit und erleichtert das Unit-Testing.
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 MustInherit Class Shape(Double width, Double height)
Public ReadOnly Property Width() As Double = width
Public ReadOnly Property Height() As Double = height
Public MustOverride Function CalculateArea() As Double
End Class
Public Class Rectangle(Double width, Double height)
Inherits Shape(width, height)
Public Overrides Function CalculateArea() As Double
Return Width * Height
End Function
End Class
Public Class Circle
Inherits Shape
Public Sub New(ByVal radius As Double)
MyBase.New(radius * 2, radius * 2)
End Sub
Public Overrides Function CalculateArea() As Double
Return Math.PI * Math.Pow(Width / 2, 2)
End Function
End ClassIn diesem Beispiel bildet der Primary Constructor in der Form-Klasse die Grundlage für eine geometrische Formenhierarchie. Unterklassen wie Rechteck und Kreis nutzen den Primary Constructor für eine konsistente Initialisierung. Die Rechteck-Klasse erklärt selbst den Primary Constructor und übergibt die erfassten Parameter des Primary Constructors an die Primärparameter der Form-Klasse. Die Kreis-Klasse zeigt Flexibilität, indem sie ihren Konstruktor innerhalb der gesamten Klasse definiert und ihre Parameter als Standardwerte für den Form-Konstruktor mit dem base-Schlüsselwort übergibt.
Einführung in IronPDF
IronPDF ist eine vielseitige C#-Bibliothek, die Entwicklern ermöglicht, PDF-Dateien mühelos zu erstellen, zu bearbeiten und zu konvertieren. Ob Sie Rechnungen, Berichte oder andere Dokumente erstellen, IronPDF ermöglicht Ihnen, HTML-Inhalte nahtlos in polierte und professionelle PDFs direkt in Ihrer C#-Anwendung zu konvertieren.
IronPDF ist ein nützliches Werkzeug für Entwickler, das es ihnen ermöglicht, Webseiten, URLs und HTML in PDF zu verwandeln. Der beste Teil ist, dass die PDFs genau wie die ursprünglichen Webseiten aussehen, mit all der Formatierung und dem Styling erhalten. Es ist perfekt, um PDFs aus Webinhalten wie Berichten und Rechnungen zu erstellen.
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
Installation von IronPDF: Ein Schnellstart
Um IronPDF in Ihr C#-Projekt zu integrieren, beginnen Sie mit der Installation des IronPDF NuGet-Pakets. Führen Sie folgenden Befehl in der Package Manager Console aus:
Alternativ können Sie "IronPDF" im NuGet-Paket-Manager suchen und von dort mit der Installation fortfahren.

Erzeugen von PDFs mit IronPDF
Die Erstellung eines PDFs mit IronPDF ist ein optimierter Prozess. Beispiel: IronPDF rendert HTML zu einem PDF und speichert es.
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");Dim htmlContent = "<html><body><h1>Hello, IronPDF!</h1></body></html>"
' Create a new PDF document
Dim pdfDocument = New IronPdf.ChromePdfRenderer()
pdfDocument.RenderHtmlAsPdf(htmlContent).SaveAs("C:/GeneratedDocument.pdf")In diesem Beispiel wird IronPDF verwendet, um HTML-Inhalte in ein PDF-Dokument zu rendern, das anschließend am angegebenen Standort gespeichert wird. Für weitere Informationen zur Erstellung und Bearbeitung von PDFs in C# besuchen Sie bitte diesen vollständigen Tutorial-Link und um mehr zu erkunden, besuchen Sie bitte diese Dokumentationsseite.
C# Primärkonstruktoren: Eine Revolution der Klasseninitialisierung
C# Primary Constructors bieten einen deklarativen und optimierten Ansatz zur Initialisierung von Klassen-Eigenschaften direkt innerhalb der Klassendeklaration. Lassen Sie uns erkunden, ob dieses elegante Feature nahtlos in IronPDF integriert werden kann.
Integration von C# Hauptkonstruktoren mit IronPDF
Während C# Primary Constructors primär eine Sprachfunktion sind, die sich auf die Initialisierung von Klassen konzentriert, ist ihre direkte Integration mit IronPDF möglicherweise kein häufiger Anwendungsfall. Die Kernfunktionalität von IronPDF liegt in der Erstellung und Bearbeitung von PDF-Dokumenten, und die Details der Klasseninitialisierung könnten nicht direkt mit diesem Workflow übereinstimmen.
Entwickler können jedoch C# Primary Constructors nutzen, wenn sie benutzerdefinierte Klassen oder Strukturen im Zusammenhang mit IronPDF-Konfigurationen oder Datenmodellen definieren. Wenn Ihre Anwendung beispielsweise eine spezifische Klassenstruktur erfordert, um PDF-bezogene Einstellungen oder Konfigurationen zu verwalten, können C# Primary Constructors ein wertvolles Werkzeug sein, um diese Klassen prägnant 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
{
PaperSize = IronPdf.Rendering.PdfPaperSize.A4,
MarginTop = 20,
MarginBottom = 20,
MarginLeft = 10,
MarginRight = 10,
Title = pdfSettings.Title
};
// Apply settings from PdfGenerationSettings
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, Boolean includeHeader, Boolean includeFooter)
Public ReadOnly Property Title() As String = title
Public ReadOnly Property IncludeHeader() As Boolean = includeHeader
Public ReadOnly Property IncludeFooter() As Boolean = includeFooter
' Additional properties...
End Class
' Usage with IronPDF
Private pdfSettings = New PdfGenerationSettings("My PDF Title", True, False)
Private renderOptions = New ChromePdfRenderOptions With {
.PaperSize = IronPdf.Rendering.PdfPaperSize.A4,
.MarginTop = 20,
.MarginBottom = 20,
.MarginLeft = 10,
.MarginRight = 10,
.Title = pdfSettings.Title
}
' Apply settings from PdfGenerationSettings
If pdfSettings.IncludeHeader Then
renderOptions.TextHeader = New TextHeaderFooter With {
.CenterText = "Page {page} of {total-pages}",
.DrawDividerLine = True
}
End If
Dim pdfDocument = New IronPdf.ChromePdfRenderer()
pdfDocument.RenderingOptions = renderOptions
pdfDocument.RenderHtmlAsPdf("<html><body><h1>Hello, IronPDF!</h1></body></html>").SaveAs("CustomizedDocument.pdf")In diesem Beispiel nutzt die PdfGenerationSettings-Klasse einen C# Primary Constructor, um Eigenschaften im Zusammenhang mit den PDF-Erstellungseinstellungen zu initialisieren, die später verwendet werden können, um herauszufinden, welche Rendering-Optionen hinzuzufügen sind und welche zu überspringen sind. Die Ausgabe enthält einen Kopfzeilentext und einen Titel, da er mit dem Primary Constructor-Parameter festgelegt wurde.

Abschluss
Zusammenfassend bieten Primary Constructors in C# einen verfeinerten und ausdrucksstarken Ansatz für die Klasseninitialisierung. Ihre deklarative Syntax verbessert die Lesbarkeit des Codes, fördert die Unveränderlichkeit und vereinfacht den Prozess der Erstellung von Objekten mit Standardwerten. Egal, ob Sie Eigenschaften festlegen, Unveränderlichkeit erzwingen oder Standardwerte akzeptieren, Primary Constructors ermöglichen Entwicklern, die Kunst der Klasseninitialisierung in der dynamischen Welt der C#-Programmierung zu meistern.
Während die direkte Integration von C# Primary Constructors mit IronPDF möglicherweise nicht im Vordergrund steht, können diese beiden Elemente harmonisch zusammenarbeiten. C# Primary Constructors verbessern die Klarheit und Einfachheit der Klasseninitialisierung, was sie wertvoll für die Definition von Strukturen oder Konfigurationen im Zusammenhang mit IronPDF-Workflows macht.
Nutzen Sie die Leistungsfähigkeit von IronPDF für die robuste PDF-Erstellung und setzen Sie C# Primary Constructors dort ein, wo Eleganz in der Klasseninitialisierung von größter Bedeutung ist. Dieses dynamische Duo ermöglicht es Ihnen, die Komplexitäten der Dokumentenerstellung mit Kreativität und Effizienz in der lebendigen Welt der C#-Programmierung zu meistern.
IronPDF bietet eine kostenlose Testversion und seine lite Lizenz beginnt bei $999.

Jacob Mellor ist Chief Technology Officer bei Iron Software und ein visionärer Ingenieur, der Pionierarbeit in der C# PDF-Technologie leistet. Als der ursprüngliche Entwickler hinter der Kern-Codebasis von Iron Software hat er die Produktarchitektur des Unternehmens seit seiner Gründung geprägt und es zusammen mit CEO Cameron Rimington in ein Unternehmen mit mehr als 50 Mitarbeitern verwandelt, das die NASA, Tesla und globale Regierungsbehörden beliefert.
Verwandte Artikel


