Zum Fußzeileninhalt springen
.NET HILFE

C# Übergabe nach Referenz (Wie es für Entwickler funktioniert)

Effektive Speicherverwaltung und Datenmanipulation sind wesentliche Komponenten, um leistungsstarken Code in der Programmierwelt zu erstellen. Damit ein fehlerfreier Code entsteht, ist es erforderlich, zu verstehen, wie Daten zwischen Methoden und Funktionen in Sprachen wie C# übertragen werden. Eine entscheidende Idee in diesem Verfahren ist "Pass by Reference". Wir werden in diesem Beitrag die Bedeutung von "Pass by Reference" in C# und geeignete Nutzungsszenarien erkunden.

Wie man C# Pass by Reference verwendet

  1. Definieren Sie eine Methode mit Ref-Parametern.
  2. Initialisieren Sie eine Variable.
  3. Rufen Sie die Methode mit dem Ref-Keyword auf.
  4. Ändern Sie die Variable innerhalb der Methode.
  5. Beobachten Sie Änderungen in der Hauptmethode.
  6. Definieren Sie eine andere Methode mit dem Out-Parameter zur Generierung von PDF.
  7. Initialisieren und rufen Sie die Out-Methode auf.

Was ist Pass by Reference in C#?

Die Nutzung einer Referenz zum Übergeben bezieht sich auf die Art in C#, Argumente an Funktionen oder Methoden zu senden, indem eine Referenz auf die ursprüngliche Variable der aufgerufenen Methode statt einer Kopie ihres Werts gegeben wird. Das bedeutet, dass alle Änderungen, die am Parameter innerhalb der Methode vorgenommen werden, auch Auswirkungen auf die ursprüngliche Variable außerhalb der Methode haben werden.

Wertetypvariablen in C# (wie int, float, bool, etc.) werden üblicherweise als Wert übergeben, was bedeutet, dass die Methode eine Kopie des Variablenwerts erhält. Dennoch kann man dem Compiler sagen, Argumente per Referenz zu übergeben, indem man das ref Schlüsselwort nutzt.

Verwendung des ref-Schlüsselworts

In C# können Argumente für Referenzparameter, die durch Referenz übergeben werden, mit dem ref-Schlüsselwort erstellt werden. Alle Änderungen, die an einem Parameter vorgenommen werden, der mittels ref Schlüsselwort per Referenz übergeben wird, wirken sich auf die originale Variable aus.

class Program
{
    static void Main(string[] args)
    {
        int num = 10;
        Console.WriteLine("Before: " + num); // Output: Before: 10
        ModifyByRef(ref num);
        Console.WriteLine("After: " + num);  // Output: After: 20
    }

    // Method that modifies the integer by reference
    static void ModifyByRef(ref int x)
    {
        x = x * 2; // Modify the original value by reference
    }
}
class Program
{
    static void Main(string[] args)
    {
        int num = 10;
        Console.WriteLine("Before: " + num); // Output: Before: 10
        ModifyByRef(ref num);
        Console.WriteLine("After: " + num);  // Output: After: 20
    }

    // Method that modifies the integer by reference
    static void ModifyByRef(ref int x)
    {
        x = x * 2; // Modify the original value by reference
    }
}
$vbLabelText   $csharpLabel

Die ModifyByRef Methode im obigen Beispiel verwendet das ref Schlüsselwort, um einen Ganzzahlenparameter, x, per Referenz zu übernehmen. Änderungen, die an der Ref-Parameter x innerhalb der Methode vorgenommen werden, haben eine sofortige Wirkung auf die num Variable außerhalb der Methode, wenn die Methode mit ref num aufgerufen wird.

Das aus Schlüsselwort

Das out Schlüsselwort wird verwendet, um Parameter per Referenz an die aufrufende Methode zu übergeben, genau wie ref. Das ermöglicht es Methoden, zahlreiche Werte zurückzugeben.

class Program
{
    static void Main(string[] args)
    {
        int result;
        Calculate(10, 5, out result);
        Console.WriteLine("Result: " + result); // Output: Result: 15
    }

    // Method that calculates the sum of two integers and outputs the result by reference
    static void Calculate(int x, int y, out int result)
    {
        result = x + y; // Assign the sum to the out parameter
    }
}
class Program
{
    static void Main(string[] args)
    {
        int result;
        Calculate(10, 5, out result);
        Console.WriteLine("Result: " + result); // Output: Result: 15
    }

    // Method that calculates the sum of two integers and outputs the result by reference
    static void Calculate(int x, int y, out int result)
    {
        result = x + y; // Assign the sum to the out parameter
    }
}
$vbLabelText   $csharpLabel

Es werden zwei Ganzzahlenparameter, x und y, sowie ein zusätzlicher Parameter result, der durch das out Schlüsselwort gekennzeichnet ist, an die Calculate Methode in diesem Beispiel übergeben. Das Ergebnis wird dem result Parameter zugewiesen, nachdem das Verfahren die Summe von x und y berechnet hat. Das result muss nicht initialisiert werden, bevor es an die Methode gesendet wird, da es als out markiert ist.

Wann wird Pass by Reference verwendet

Effizienten und wartbaren Code zu schreiben erfordert, zu wissen, wann man Pass-by-Reference verwenden soll. Die folgenden Situationen erfordern die Nutzung von Pass-by-Reference:

Mehrere Variablen modifizieren

Das Übergeben der Parameter per Referenz kann hilfreich sein, wenn eine Methode mehrere Variablen ändern muss und diese Änderungen außerhalb der Methode reflektiert werden müssen. Anstatt dass das Verfahren mehrere Werte zurückgibt, können Variablen per Referenz gesendet und direkt innerhalb der Methode geändert werden.

// Method that modifies multiple variables by reference
static void ModifyMultipleByRef(ref int a, ref int b)
{
    a *= 2; // Double the first variable
    b *= 3; // Triple the second variable
}
// Method that modifies multiple variables by reference
static void ModifyMultipleByRef(ref int a, ref int b)
{
    a *= 2; // Double the first variable
    b *= 3; // Triple the second variable
}
$vbLabelText   $csharpLabel

Große Datenstrukturen

Durch die Vermeidung unnötiger Datenreplikationen können große Datenstrukturen - wie Arrays oder komplexe Objekte - per Referenz übergeben werden, um die Effizienz zu verbessern. Pass-by-Reference sollte jedoch mit Vorsicht angewendet werden, wenn mit großen Datenstrukturen gearbeitet wird, da es bei unsachgemäßer Handhabung unerwartete Konsequenzen haben kann.

Interoperabilität mit externem Code

Es könnte notwendig sein, Argumente per Referenz zu senden, um sowohl der Methodendefinition als auch den Anforderungen des externen Codes zu entsprechen, wenn mit externen Bibliotheken interagiert oder nativer Code integriert wird.

Was ist IronPDF?

IronPDF ermöglicht Programmierern die Erstellung, Bearbeitung und das Rendern von PDF-Dokumenten innerhalb von .NET-Anwendungen. Sein umfangreicher Funktionsumfang macht das Arbeiten mit PDF-Dateien einfach. Sie können PDF-Dokumente aus HTML, Fotos und anderen Formaten erstellen; PDFs mit Text, Bildern und anderen Daten annotieren; und vorhandene PDF-Dokumente aufteilen, zusammenführen und bearbeiten.

IronPDFs Hauptmerkmal ist die Fähigkeit, HTML in PDF zu konvertieren und sicherzustellen, dass Layouts und Stile beibehalten werden. Diese Funktion ist hervorragend für die Erstellung von PDFs aus webbasierten Inhalten wie Berichten, Rechnungen und Dokumentationen geeignet. Es konvertiert HTML-Dateien, URLs und HTML-Zeichenfolgen in PDF-Dateien.

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

Funktionen von IronPDF

Text- und Bildkommentar

IronPDF ermöglicht es Ihnen, programmatisch Text, Bilder und Anmerkungen zu PDF-Dokumenten hinzuzufügen. Sie können PDF-Dateien mit Signaturen, Stempeln und Anmerkungen dank dieser Funktion annotieren.

PDF-Sicherheit

IronPDF ermöglicht es Ihnen, verschiedene Berechtigungen festzulegen, einschließlich des Druckens, Kopierens von Inhalten und Bearbeitens des Dokuments, und es kann PDF-Dokumente mit Passwörtern verschlüsseln. Dies hilft Ihnen, den Zugriff auf PDF-Dateien zu steuern und sensible Daten zu schützen.

Interaktive PDF-Formulare ausfüllen

IronPDF ermöglicht es Ihnen, interaktive PDF-Formulare programmatisch auszufüllen. Diese Fähigkeit ist hilfreich, um maßgeschneiderte Dokumente basierend auf Benutzereingaben zu erstellen oder Formularübermittlungen zu automatisieren.

PDF-Komprimierung und -Optimierung

Um die Dateigröße zu minimieren, ohne an Qualität zu verlieren, bietet IronPDF Lösungen sowohl zur Komprimierung als auch zur Optimierung von PDF-Dateien. Dies reduziert den Speicherbedarf für PDF-Dokumente, während es gleichzeitig die Leistung verbessert.

Plattformübergreifende Kompatibilität

IronPDF ist darauf ausgelegt, nahtlos mit .NET-Anwendungen zu funktionieren, die für Windows, Linux und macOS sowie andere Plattformen bestimmt sind. Es ist in beliebte .NET-Frameworks wie ASP.NET, .NET Core und Xamarin integriert.

Ein neues Visual Studio-Projekt erstellen

Es ist einfach, ein Konsolenprojekt mit Visual Studio zu erstellen. Um eine Konsolenanwendung zu erstellen, gehen Sie folgendermaßen in Visual Studio vor:

Stellen Sie vor Beginn der Visual-Studio-Entwicklung sicher, dass Sie diese auf Ihrem Computer installiert haben.

Ein neues Projekt starten

Wählen Sie Datei, dann Neu, und schließlich Projekt.

C# Pass by Reference (Wie es für Entwickler funktioniert): Abbildung 1

Wählen Sie auf der linken Seite des "Neues Projekt erstellen"-Fensters Ihre bevorzugte Programmiersprache aus (z.B. C#).

Die "Konsolen-App" oder das "Konsolen-App (.NET Core)"-Template kann aus der folgenden Liste von Projektvorlagen gewählt werden.

Geben Sie Ihrem Projekt im Feld "Name" einen Namen.

C# Pass by Reference (Wie es für Entwickler funktioniert): Abbildung 2

Wählen Sie den Speicherort aus, an dem Sie das Projekt speichern möchten.

Drücken Sie "Erstellen", um das Konsolenanwendungsprojekt zu initiieren.

C# Pass by Reference (Wie es für Entwickler funktioniert): Abbildung 3

Installation von IronPDF

Unter "Tools" in den Visual Studio Tools finden Sie die Visual Command-Line-Schnittstelle. Wählen Sie den Paket-Manager für NuGet. Im Paketverwaltungs-Terminal-Tab müssen Sie den folgenden Befehl eingeben.

Install-Package IronPdf

Eine zusätzliche Alternative ist es, den Paket-Manager zu verwenden. Das direkte Installieren des Pakets in die Lösung ist mit der NuGet-Paket-Manager-Option möglich. Verwenden Sie das Suchfeld auf der NuGet-Website, um Pakete zu finden. Das folgende Screenshotbeispiel zeigt, wie einfach es ist, nach "IronPDF" im Paket-Manager zu suchen:

C# Pass by Reference (Wie es für Entwickler funktioniert): Abbildung 4 - Installation von IronPDF über den NuGet-Paket-Manager

Die Liste der relevanten Suchergebnisse ist im obigen Bild zu sehen. Um die Installation der Software auf Ihrem Rechner zu ermöglichen, passen Sie bitte diese Einstellungen an.

Sobald das Paket heruntergeladen und installiert wurde, kann es nun im aktuellen Projekt verwendet werden.

Verwendung von Pass by Reference mit IronPDF

Dies ist ein Beispiel für die Nutzung der Pass-by-Reference-Funktion von IronPDF.

using IronPdf;
using System;

class Program
{
    static void Main(string[] args)
    {
        // Create a PDF document
        var pdf = new IronPdf.HtmlToPdf();
        // HTML content to be converted to PDF
        string htmlContent = "<h1>Hello, IronPDF!</h1>";
        // Create a byte array to store the PDF content
        byte[] pdfBytes;
        // Convert HTML to PDF and pass the byte array by reference
        ConvertHtmlToPdf(pdf, htmlContent, out pdfBytes);
        // Save or process the PDF content
        // For demonstration, let's print the length of the PDF content
        Console.WriteLine("Length of PDF: " + pdfBytes.Length);
    }

    // Method that converts HTML content to PDF and stores it in a byte array by reference
    static void ConvertHtmlToPdf(IronPdf.HtmlToPdf pdfConverter, string htmlContent, out byte[] pdfBytes)
    {
        // Convert HTML to PDF and store the result in the byte array
        var pdfDoc = pdfConverter.RenderHtmlAsPdf(htmlContent);
        pdfBytes = pdfDoc.BinaryData;
    }
}
using IronPdf;
using System;

class Program
{
    static void Main(string[] args)
    {
        // Create a PDF document
        var pdf = new IronPdf.HtmlToPdf();
        // HTML content to be converted to PDF
        string htmlContent = "<h1>Hello, IronPDF!</h1>";
        // Create a byte array to store the PDF content
        byte[] pdfBytes;
        // Convert HTML to PDF and pass the byte array by reference
        ConvertHtmlToPdf(pdf, htmlContent, out pdfBytes);
        // Save or process the PDF content
        // For demonstration, let's print the length of the PDF content
        Console.WriteLine("Length of PDF: " + pdfBytes.Length);
    }

    // Method that converts HTML content to PDF and stores it in a byte array by reference
    static void ConvertHtmlToPdf(IronPdf.HtmlToPdf pdfConverter, string htmlContent, out byte[] pdfBytes)
    {
        // Convert HTML to PDF and store the result in the byte array
        var pdfDoc = pdfConverter.RenderHtmlAsPdf(htmlContent);
        pdfBytes = pdfDoc.BinaryData;
    }
}
$vbLabelText   $csharpLabel

Die ConvertHtmlToPdf Funktion in diesem Beispiel nimmt drei Parameter: HTML-Inhalt, ein Byte-Array namens pdfBytes und ein IronPDF HtmlToPdf-Objekt. Das out Schlüsselwort gibt an, dass der pdfBytes Parameter per Referenz übergeben wird und innerhalb der Methode geändert wird.

C# Pass by Reference (Wie es für Entwickler funktioniert): Abbildung 5

Der HTML-Inhalt wird innerhalb der ConvertHtmlToPdf Funktion als PDF-Dokument mithilfe von IronPDF gerendert, und die resultierenden Binärdaten werden im pdfBytes Array gespeichert.

Wir verwenden IronPDF HTML to PDF Conversion erneut in der Hauptfunktion, indem wir das pdfBytes Array über Referenz übergeben. Nach dem Methodenaufruf wird der PDF-Inhalt von IronPDF im Speicherort des pdfBytes Arrays gespeichert.

C# Pass by Reference (Wie es für Entwickler funktioniert): Abbildung 6

Dies zeigt Ihnen, wie Sie mithilfe von IronPDF und Pass-by-Reference in C# effizient PDF-Dokumente erstellen und bearbeiten können.

Abschluss

Zusammengefasst verbessert die Nutzung von IronPDF mit Pass-by-Reference in C# erheblich die Fähigkeiten, PDF-Dokumente in .NET-Programmen zu erstellen und zu bearbeiten. Ein effektiver Einsatz der ref und out Schlüsselwörter ermöglicht es Entwicklern, Argumente mühelos per Referenz zu übertragen, wodurch es möglich wird, Variablen und Inhalte innerhalb von Methoden schnell und effizient zu modifizieren. IronPDFs breite Funktionspalette, die die Fähigkeit zur Konvertierung von HTML in PDF, zur Erstellung von PDFs basierend auf Bildern und zur Durchführung umfangreicher PDF-Bearbeitungsaufgaben umfasst, ermöglicht es Entwicklern, dynamische und interaktive PDF-Dokumente einfach zu erstellen.

IronPDF bietet die benötigten Werkzeuge und APIs, um Dokumentenverarbeitungsprozesse zu beschleunigen, einschließlich der Aufteilung, Zusammenführung, Annotation und Optimierung von PDF-Dateien. Darüber hinaus gewährleistet die plattformübergreifende Interoperabilität von IronPDF, dass C#-Anwendungen PDF-Funktionen problemlos in verschiedenen Umgebungen integrieren können. Im Wesentlichen können Entwickler neue Wege zur Erstellung, Änderung und Anzeige von PDF-Dokumenten in ihren Apps erschließen, indem sie die Stärke von C#'s Pass-by-Reference mit IronPDFs reichhaltigem Funktionsset kombinieren.

Zuletzt können Sie effizient mit Excel arbeiten, PDFs erstellen, OCR durchführen und Barcodes verwenden. [Die Preise für jede Bibliothek beginnen bei $799](Iron Suite). Entwickler können mit Zuversicht das beste Modell auswählen, wenn klare Lizenzoptionen vorhanden sind, die auf die Bedürfnisse des Projekts zugeschnitten sind. Mit diesen Vorteilen können Entwickler mit Effizienz und Transparenz verschiedenen Herausforderungen begegnen.

Häufig gestellte Fragen

Wie kann ich HTML in PDF in C# konvertieren?

Sie können die RenderHtmlAsPdf-Methode von IronPDF verwenden, um HTML-Strings in PDFs zu konvertieren. Diese Methode ermöglicht es Ihnen, Webseiten oder HTML-Inhalte leicht in qualitativ hochwertige PDF-Dokumente zu transformieren und dabei das ursprüngliche Layout und die Formatierung beizubehalten.

Was bedeutet 'Pass-by-Reference' in C#?

'Pass-by-Reference' in C# bezieht sich auf eine Methode des Argumente-Übergabens an Funktionen oder Methoden, indem eine Referenz auf die ursprüngliche Variable anstatt einer Kopie ihres Wertes angegeben wird. Dadurch können alle Änderungen am Parameter innerhalb der Methode die ursprüngliche Variable beeinflussen.

Wie verwendet man die Schlüsselwörter 'ref' und 'out' in C#?

In C# wird das Schlüsselwort 'ref' verwendet, um Argumente per Referenz zu übergeben, sodass Modifikationen innerhalb der Methode die ursprüngliche Variable beeinflussen können. Das Schlüsselwort 'out' ist ähnlich, erfordert jedoch nicht, dass die Variable vorher initialisiert wird, wodurch Methoden mehrere Werte zurückgeben können.

Wann sollte man 'Pass-by-Reference' in C# verwenden?

'Pass-by-Reference' sollte verwendet werden, wenn Sie mehrere Variablen modifizieren müssen, große Datenstrukturen verarbeiten wollen, um unnötige Kopien zu vermeiden, oder wenn Sie mit externen Bibliotheken interagieren, die Referenzparameter benötigen.

Wie kann eine PDF-Verarbeitung-Bibliothek 'Pass-by-Reference' nutzen?

Eine PDF-Verarbeitung-Bibliothek wie IronPDF kann 'Pass-by-Reference' nutzen, um PDF-Daten in einem Byte-Array mit dem Schlüsselwort 'out' zu speichern. Dies ermöglicht eine effiziente Verarbeitung und Modifikation von PDF-Inhalten innerhalb von Methoden, wie z. B. die Umwandlung von HTML in PDF und das Speichern des Ergebnisses in einem Byte-Array.

Was sind die Vorteile der Verwendung einer PDF-Verarbeitung-Bibliothek in .NET?

Eine PDF-Verarbeitung-Bibliothek wie IronPDF bietet Funktionen wie HTML-zu-PDF-Konvertierung, Text- und Bildanmerkungen, PDF-Sicherheit, Formularausfüllung, Komprimierung und Optimierung. Sie ist kompatibel mit .NET-Anwendungen und verbessert die Funktionalität sowie die plattformübergreifende Kompatibilität.

Wie installiert man eine PDF-Verarbeitung-Bibliothek in einem Visual Studio-Projekt?

Eine PDF-Verarbeitung-Bibliothek kann in einem Visual Studio-Projekt mithilfe des NuGet Package Managers installiert werden. Verwenden Sie den entsprechenden Befehl im Paketverwaltungsterminal oder suchen Sie die Bibliothek in der Benutzeroberfläche des NuGet Package Managers.

Kann IronPDF mit ASP.NET und .NET Core verwendet werden?

Ja, IronPDF ist so konzipiert, dass es nahtlos in ASP.NET- und .NET-Core-Anwendungen integriert werden kann und Entwicklern ermöglicht, PDF-Dokumente über verschiedene Plattformen hinweg zu erstellen, zu modifizieren und zu rendern.

Jacob Mellor, Chief Technology Officer @ Team Iron
Chief Technology Officer

Jacob Mellor ist Chief Technology Officer bei Iron Software und ein visionärer Ingenieur, der führend in der C# PDF-Technologie ist. Als ursprünglicher Entwickler der Iron Software-Kerncodebasis hat er die Produktarchitektur des Unternehmens seit seiner Gründung gestaltet und zusammen mit CEO Cameron Rimington in ein Unternehmen ...

Weiterlesen