using IronPdf;
// Disable local disk access or cross-origin requests
Installation.EnableWebSecurity = true;
// Instantiate Renderer
var renderer = new ChromePdfRenderer();
// Create a PDF from a HTML string using C#
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
// Export to a file or Stream
pdf.SaveAs("output.pdf");
// Advanced Example with HTML Assets
// Load external html assets: Images, CSS and JavaScript.
// An optional BasePath 'C:\site\assets\' is set as the file location to load assets from
var myAdvancedPdf = renderer.RenderHtmlAsPdf("<img src='icons/iron.png'>", @"C:\site\assets\");
myAdvancedPdf.SaveAs("html-with-assets.pdf");
Ein bestimmtes Schlüsselwort in C#, das eine besondere Bedeutung hat, ist das this-Schlüsselwort. Dieses Schlüsselwort bezieht sich auf die aktuelle Klasseninstanz, in der es verwendet wird. Er kann unter anderem dazu verwendet werden, um zwischen Variablen auf Klassenebene und Methodenparametern zu unterscheiden, die denselben Namen haben. Zum Beispiel, wenn Sie eine Instanzvariable und einen Methodenparameter mit demselben Namen haben, kann this ein Lebensretter sein!
Die Grundlagen dieses Schlüsselworts
In einer öffentlichen Klasse, wie zum Beispiel Employee, können öffentliche Instanzvariablen wie id oder name vorhanden sein. Wenn Sie diesen Instanzvariablen innerhalb einer Methode Werte zuweisen wollen, stoßen Sie möglicherweise auf ein häufiges Problem: Was ist, wenn die Methodenparameter denselben Namen haben wie die Instanzvariablen?
Hier ist eine Lösung: Verwenden Sie das this-Schlüsselwort in der C#-Dokumentation! Im folgenden Beispiel einer Methode innerhalb der öffentlichen Klasse Employee wird das Schlüsselwort this verwendet, um zwischen den Instanzvariablen und den Methodenparametern zu unterscheiden, die die gleichen Namen teilen.
Public Sub Display(ByVal id As Integer, ByVal name As String)
Me.id = id
Me.name = name
End Sub
$vbLabelText $csharpLabel
In diesem Fall bezieht sich this.id auf die Instanzvariable, und id ist der Methodenparameter.
this-Schlüsselwort bei Konstruktorüberladung
Durch die Nutzung des this Schlüsselworts wird das Überladen von Konstruktoren zu einer leistungsstarken Technik innerhalb derselben Klasse. Wenn eine Klasse, wie zum Beispiel eine student-Klasse, mehrere Konstruktoren mit unterschiedlichen Parametern hat, ermöglicht das Schlüsselwort this einem Konstruktor, einen anderen aufzurufen, wodurch überflüssiger Code vermieden wird.
Betrachten Sie das folgende Beispiel, in dem this in einem parametrierten Konstruktor verwendet wird:
public class Student
{
private string name;
private int id;
public Student() : this("Default", 0)
{
}
public Student(string name, int id)
{
this.name = name;
this.id = id;
}
}
public class Student
{
private string name;
private int id;
public Student() : this("Default", 0)
{
}
public Student(string name, int id)
{
this.name = name;
this.id = id;
}
}
Public Class Student
Private name As String
Private id As Integer
Public Sub New()
Me.New("Default", 0)
End Sub
Public Sub New(ByVal name As String, ByVal id As Integer)
Me.name = name
Me.id = id
End Sub
End Class
$vbLabelText $csharpLabel
Im parameterlosen Konstruktor ruft this("Default", 0) den parametrisierten Konstruktor auf und setzt Default als Name und als ID.
Erkunden von this in Erweiterungsmethoden
Erweiterungsmethoden in C# bieten eine Möglichkeit, Methoden zu bestehenden Typen hinzuzufügen, ohne den ursprünglichen Typ zu verändern. Hier entfaltet das Schlüsselwort this seine magische Wirkung. Er wird in der Parameterliste der Erweiterungsmethode verwendet, um auf den Typ zu verweisen, der erweitert wird.
Betrachten Sie das folgende Beispiel für eine Erweiterungsmethode:
public static class StringExtensions
{
public static bool IsNullOrEmpty(this string str)
{
return string.IsNullOrEmpty(str);
}
}
public static class StringExtensions
{
public static bool IsNullOrEmpty(this string str)
{
return string.IsNullOrEmpty(str);
}
}
Public Module StringExtensions
<System.Runtime.CompilerServices.Extension> _
Public Function IsNullOrEmpty(ByVal str As String) As Boolean
Return String.IsNullOrEmpty(str)
End Function
End Module
$vbLabelText $csharpLabel
Hier sagt this string str C#, dass dies eine Erweiterungsmethode für den String-Typ ist. Jetzt können Sie diese Methode auf jedes String-Objekt anwenden, wie if(myString.IsNullOrEmpty()).
this in Indexern
Das Schlüsselwort this kann auch bei der Definition von Indexern verwendet werden. Ein Indexer ermöglicht es, Instanzen einer Klasse genau wie Arrays zu indizieren. So können Sie mit einer indexähnlichen Notation auf Daten innerhalb von Objekten zugreifen. In einem Indexer folgt auf this ein Array-Index, der normalerweise int index ist.
Hier ist ein einfaches Beispiel für einen Indexer:
public class Test
{
private int [] array = new int [100];
public int this [int index]
{
get { return array [index]; }
set { array [index] = value; }
}
}
public class Test
{
private int [] array = new int [100];
public int this [int index]
{
get { return array [index]; }
set { array [index] = value; }
}
}
Public Class Test
Private array(99) As Integer
Default Public Property Item(ByVal index As Integer) As Integer
Get
Return array (index)
End Get
Set(ByVal value As Integer)
array (index) = value
End Set
End Property
End Class
$vbLabelText $csharpLabel
In dieser Klasse Test definiert das Schlüsselwort this einen Indexer, der verwendet werden kann, um Werte im Instanzfeld array zu erhalten oder zu setzen.
this und statische Mitglieder
Eine Sache, die bei this zu beachten ist, ist, dass es nicht verwendet werden kann, um auf statische Mitglieder oder Methoden zu verweisen. Dies liegt daran, dass this sich auf die aktuelle Instanz bezieht und statische Mitglieder zur Klasse selbst gehören, nicht zu einer Instanz der Klasse.
public class Program
{
public static void Main(string [] args)
{
// Can't use `this` here, because 'Main' is a static method.
}
}
public class Program
{
public static void Main(string [] args)
{
// Can't use `this` here, because 'Main' is a static method.
}
}
Public Class Program
Public Shared Sub Main(ByVal args() As String)
' Can't use `this` here, because 'Main' is a static method.
End Sub
End Class
$vbLabelText $csharpLabel
Also, denk daran, this ist für Instanzen, nicht für klassenebene oder statische Mitglieder!
this-Schlüsselwort und Eigenschaften
Genau wie Instanzvariablen und Methodenparameter kann das this-Schlüsselwort auch mit Eigenschaften verwendet werden. In C# ist eine Eigenschaft ein Element, das einen flexiblen Mechanismus zum Lesen, Schreiben oder Berechnen des Wertes eines privaten Feldes bietet. Eigenschaften können so verwendet werden, als wären sie öffentliche Datenmitglieder, aber in Wirklichkeit sind sie spezielle Methoden, die Accessors genannt werden.
Schauen wir uns ein einfaches Beispiel an, bei dem this in einer Eigenschaft verwendet wird:
public class Employee
{
private string name;
public string Name
{
get { return this.name; }
set { this.name = value; }
}
}
public class Employee
{
private string name;
public string Name
{
get { return this.name; }
set { this.name = value; }
}
}
Public Class Employee
'INSTANT VB NOTE: The field name was renamed since Visual Basic does not allow fields to have the same name as other class members:
Private name_Conflict As String
Public Property Name() As String
Get
Return Me.name_Conflict
End Get
Set(ByVal value As String)
Me.name_Conflict = value
End Set
End Property
End Class
$vbLabelText $csharpLabel
In der obigen Klasse wird das Schlüsselwort this verwendet, um auf den privaten String name in den get- und set-Zugriffsmodifikatoren der Name-Eigenschaft zu verweisen.
Erkundung von this und Delegates
Ein weiterer Ort, an dem this vorkommt, ist in Delegaten. Ein Delegat in C# ist vergleichbar mit einem Funktionszeiger in C oder C++. Es handelt sich um eine Variable vom Typ Referenz, die den Verweis auf eine Methode enthält. Delegatmethoden können, genau wie Erweiterungsmethoden, this verwenden, um auf die aktuelle Instanz zuzugreifen.
Hier ist ein Beispiel für einen Delegaten, der this verwendet:
public delegate void DisplayDelegate();
public class Student
{
public int Id { get; set; }
public string Name { get; set; }
public void Display()
{
DisplayDelegate displayDelegate = new DisplayDelegate(this.DisplayDetails);
displayDelegate();
}
private void DisplayDetails()
{
Console.WriteLine("ID: " + Id + ", Name: " + Name);
}
}
public delegate void DisplayDelegate();
public class Student
{
public int Id { get; set; }
public string Name { get; set; }
public void Display()
{
DisplayDelegate displayDelegate = new DisplayDelegate(this.DisplayDetails);
displayDelegate();
}
private void DisplayDetails()
{
Console.WriteLine("ID: " + Id + ", Name: " + Name);
}
}
Public Delegate Sub DisplayDelegate()
Public Class Student
Public Property Id() As Integer
Public Property Name() As String
Public Sub Display()
Dim displayDelegate As New DisplayDelegate(AddressOf Me.DisplayDetails)
displayDelegate()
End Sub
Private Sub DisplayDetails()
Console.WriteLine("ID: " & Id & ", Name: " & Name)
End Sub
End Class
$vbLabelText $csharpLabel
In der Studentenklasse erstellt this.DisplayDetails eine neue Instanz des Delegaten, die auf die DisplayDetails-Methode des aktuellen Objekts verweist.
Implementierung des this-Schlüsselworts mit IronPDF
Lassen Sie uns ein Beispiel betrachten, bei dem Sie das this-Schlüsselwort in Verbindung mit IronPDF, einer leistungsstarken .NET-Bibliothek zum Bearbeiten und Erstellen von PDF-Dateien mit HTML, verwenden könnten.
Betrachten Sie eine Klasse mit dem Namen PDFHandler, die die IronPDF-Bibliothek verwendet, um verschiedene Operationen an PDF-Dateien durchzuführen:
using IronPdf;
public class PDFHandler
{
private string path;
public PDFHandler(string path)
{
this.path = path;
}
public void GeneratePDF(string content)
{
var Renderer = new IronPdf.ChromePdfRenderer();
var PDF = Renderer.RenderHtmlAsPdf(content);
PDF.SaveAs(this.path);
}
}
using IronPdf;
public class PDFHandler
{
private string path;
public PDFHandler(string path)
{
this.path = path;
}
public void GeneratePDF(string content)
{
var Renderer = new IronPdf.ChromePdfRenderer();
var PDF = Renderer.RenderHtmlAsPdf(content);
PDF.SaveAs(this.path);
}
}
Imports IronPdf
Public Class PDFHandler
Private path As String
Public Sub New(ByVal path As String)
Me.path = path
End Sub
Public Sub GeneratePDF(ByVal content As String)
Dim Renderer = New IronPdf.ChromePdfRenderer()
Dim PDF = Renderer.RenderHtmlAsPdf(content)
PDF.SaveAs(Me.path)
End Sub
End Class
$vbLabelText $csharpLabel
In dieser PDFHandler-Klasse wird das Schlüsselwort this verwendet, um auf das path-Feld der aktuellen Instanz zu verweisen. Dieses Feld wird verwendet, um die erzeugte PDF-Datei unter dem angegebenen Pfad zu speichern.
Wenn wir eine neue Instanz von PDFHandler erstellen und die GeneratePDF-Methode aufrufen, ermöglicht uns das this-Schlüsselwort, den während der Objekterstellung angegebenen path zu nutzen:
class Program
{
static void Main(string [] args)
{
PDFHandler pdfHandler = new PDFHandler("C:\\ThisKeyowrd.pdf");
pdfHandler.GeneratePDF("Hello World!");
}
}
class Program
{
static void Main(string [] args)
{
PDFHandler pdfHandler = new PDFHandler("C:\\ThisKeyowrd.pdf");
pdfHandler.GeneratePDF("Hello World!");
}
}
Friend Class Program
Shared Sub Main(ByVal args() As String)
Dim pdfHandler As New PDFHandler("C:\ThisKeyowrd.pdf")
pdfHandler.GeneratePDF("Hello World!")
End Sub
End Class
$vbLabelText $csharpLabel
Hier macht this den Code lesbarer und verständlicher, insbesondere beim Umgang mit Bibliotheken wie IronPDF.
Schlussfolgerung
Mittlerweile sollten Sie ein gutes Verständnis für das this-Schlüsselwort in C# haben, einschließlich seiner vielfältigen Verwendungszwecke, von einfachen Instanzvariablen bis hin zu komplexen Kontexten wie Konstruktoren, Erweiterungsmethoden, Eigenschaften, Delegaten, anonymen Methoden und sogar bei der Verwendung beliebter Bibliotheken wie IronPDF.
Denken Sie daran, dass IronPDF eine kostenlose Testversion von IronPDF anbietet, sodass Sie alles, was Sie heute gelernt haben, ausprobieren können. Wenn Sie sich entscheiden, damit weiterzumachen, beginnen die Lizenzen bereits bei \$liteLicense. IronPDF kann eine wertvolle Ergänzung zu Ihrem C#-Entwicklungs-Toolkit sein und die Handhabung von PDF-Dateien in Ihren Anwendungen vereinfachen.
Chipego hat eine natürliche Fähigkeit zum Zuhören, die ihm hilft, Kundenprobleme zu verstehen und intelligente Lösungen anzubieten. Er trat dem Iron Software-Team 2023 bei, nachdem er einen Bachelor of Science in Informationstechnologie erworben hatte. IronPDF und IronOCR sind die beiden Produkte, auf die sich Chipego konzentriert hat, aber sein Wissen über alle Produkte wächst täglich, da er neue Wege findet, Kunden zu unterstützen. Er genießt die Zusammenarbeit bei Iron Software, da Teammitglieder aus dem gesamten Unternehmen ihre unterschiedlichen Erfahrungen einbringen und so zu effektiven, innovativen Lösungen beitragen. Wenn Chipego nicht an seinem Schreibtisch sitzt, kann man ihn oft bei einem guten Buch oder beim Fußballspielen antreffen.
< PREVIOUS C# Neu (Wie es für Entwickler funktioniert)
NÄCHSTES > C# Liste (Wie es für Entwickler funktioniert)