.NET-HILFE

C# Wörterbuch Trygetvalue (Wie es für Entwickler funktioniert)

C# ist eine vielseitige und leistungsstarke Sprache, die viele Funktionen bietet. Dazu gehört auch das C#-Wörterbuch.

Grundverständnis des C# Dictionary

Bevor wir in die TryGetValue-Methode eintauchen, ist es wichtig, zu verstehen, was ein Dictionary in C# ist. Einfach ausgedrückt ist ein Dictionary eine Sammlung von Schlüssel/Wert-Paaren. Zum Beispiel könnten Sie ein Dictionary haben, bei dem die Schlüssel die Namen der Schüler (String-Werte) und die Werte deren entsprechende Alter (Integer-Werte) sind.


    Dictionary<string, int> studentAges = new Dictionary<string, int>
    {
        {"Alice", 20},
        {"Bob", 22},
        {"Charlie", 19}
    };

    Dictionary<string, int> studentAges = new Dictionary<string, int>
    {
        {"Alice", 20},
        {"Bob", 22},
        {"Charlie", 19}
    };
Dim studentAges As New Dictionary(Of String, Integer) From {
	{"Alice", 20},
	{"Bob", 22},
	{"Charlie", 19}
}
$vbLabelText   $csharpLabel

Die Schlüssel in einem Dictionary sind eindeutig. Sie können auf Schlüssel zugreifen, um den entsprechenden Wert abzurufen, wodurch Wörterbücher unglaublich effizient für Nachschlagefunktionen sind.

Der konventionelle Ansatz: ContainsKey-Methode

Bei der Arbeit mit C# Dictionaries besteht eine häufige Aufgabe darin, einen Wert abzurufen, der mit einem bestimmten Schlüssel verknüpft ist. Jedoch kann der direkte Zugriff auf einen nicht existierenden Schlüssel eine KeyNotFoundException auslösen, was den Ablauf Ihres Programms unterbricht. Um dies zu vermeiden, ist es üblich, zu prüfen, ob der angegebene Schlüssel im Wörterbuch vorhanden ist. Hier kommt die ContainsKey-Methode ins Spiel.

Die ContainsKey-Methode ist eine einfache und intuitive Funktion, die überprüft, ob ein bestimmter Schlüssel im Dictionary vorhanden ist. Hier ist die Grundsyntax der ContainsKey-Methode:

Dictionary<TKey, TValue>.ContainsKey(TKey key)
Dictionary<TKey, TValue>.ContainsKey(TKey key)
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'Dictionary<TKey, TValue>.ContainsKey(TKey key)
$vbLabelText   $csharpLabel

Sie nimmt den Schlüssel als Parameter und gibt einen booleschen Wert zurück. Wenn der Schlüssel im Dictionary ist, wird er true zurückgeben; wenn nicht, wird es false zurückgeben.

Im folgenden Beispiel haben wir ein Dictionary mit Schülernamen als Schlüssel und dem entsprechenden Alter als Wert.

Dictionary<string, int> studentAges = new Dictionary<string, int>
{
    {"Alice", 20},
    {"Bob", 22},
    {"Charlie", 19}
};
Dictionary<string, int> studentAges = new Dictionary<string, int>
{
    {"Alice", 20},
    {"Bob", 22},
    {"Charlie", 19}
};
Dim studentAges As New Dictionary(Of String, Integer) From {
	{"Alice", 20},
	{"Bob", 22},
	{"Charlie", 19}
}
$vbLabelText   $csharpLabel

Nun, wenn Sie das Alter einer Schülerin namens "Alice" erfahren möchten, würden Sie zuerst die ContainsKey-Methode verwenden, um zu überprüfen, ob "Alice" ein Schlüssel im Dictionary ist.

string student = "Alice";
if(studentAges.ContainsKey(student))
{
    int age = studentAges [student];
    Console.WriteLine($"{student} is {age} years old.");
}
else
{
    Console.WriteLine($"{student} does not exist in the dictionary.");
}
string student = "Alice";
if(studentAges.ContainsKey(student))
{
    int age = studentAges [student];
    Console.WriteLine($"{student} is {age} years old.");
}
else
{
    Console.WriteLine($"{student} does not exist in the dictionary.");
}
Dim student As String = "Alice"
If studentAges.ContainsKey(student) Then
	Dim age As Integer = studentAges (student)
	Console.WriteLine($"{student} is {age} years old.")
Else
	Console.WriteLine($"{student} does not exist in the dictionary.")
End If
$vbLabelText   $csharpLabel

In diesem Fall gibt das Programm "Alice ist 20 Jahre alt." aus. Wenn Sie versuchen würden, das Alter eines Studenten abzufragen, der nicht im Dictionary vorhanden ist, würde die ContainsKey-Methode verhindern, dass eine KeyNotFoundException ausgelöst wird, und stattdessen eine Nachricht ausgeben, dass der Student nicht existiert.

Allerdings ist die ContainsKey-Methode zwar nützlich, aber nicht immer die effizienteste. Im obigen Code-Snippet werden zwei Nachschlagevorgänge auf dem Dictionary durchgeführt: einer für die ContainsKey-Methode und einer, um den Wert abzurufen. Dies kann zeitaufwendig sein, insbesondere bei großen Wörterbüchern.

Während die ContainsKey-Methode eine einfache und intuitive Möglichkeit ist, Ausnahmen zu behandeln, wenn ein bestimmter Schlüssel in einem Wörterbuch nicht gefunden wird, lohnt es sich, alternative Methoden wie TryGetValue in Betracht zu ziehen, die eine ähnliche Funktionalität mit besserer Leistung erreichen können. Wir werden TryGetValue in den folgenden Abschnitten ausführlicher besprechen.

Kombinieren von Überprüfung und Abruf mit TryGetValue

Hier kommt die TryGetValue-Methode ins Spiel. Die TryGetValue-Methode kombiniert die Überprüfung und den Wertabruf in einem einzigen Schritt und bietet nahezu identische Code-Funktionalität, jedoch mit verbesserter Leistung.

Die Methode TryGetValue erfordert zwei Parameter:

  1. Der Schlüssel, den Sie suchen.

  2. Ein out-Parameter, der den Wert enthält, wenn der Schlüssel existiert.

    Hier ist die Syntax:

Dictionary<TKey, TValue>.TryGetValue(TKey key, out TValue value)
Dictionary<TKey, TValue>.TryGetValue(TKey key, out TValue value)
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'Dictionary<TKey, TValue>.TryGetValue(TKey key, out TValue value)
$vbLabelText   $csharpLabel

Das out-Schlüsselwort wird verwendet, um anzuzeigen, dass diese Methode den value-Parameter ändern wird. Der out-Wert wird der Standardwert des Werttyps sein, wenn der angegebene Schlüssel nicht gefunden wird (0 für ganze Zahlen, null für Referenztypen). Andernfalls enthält es den Wert, der dem angegebenen Schlüssel entspricht.

So verwenden Sie TryGetValue:

string student = "Alice";
if(studentAges.TryGetValue(student, out int age))
{
    Console.WriteLine($"{student} is {age} years old.");
}
else
{
    Console.WriteLine($"{student} does not exist in the dictionary.");
}
string student = "Alice";
if(studentAges.TryGetValue(student, out int age))
{
    Console.WriteLine($"{student} is {age} years old.");
}
else
{
    Console.WriteLine($"{student} does not exist in the dictionary.");
}
Dim student As String = "Alice"
Dim age As Integer
If studentAges.TryGetValue(student, age) Then
	Console.WriteLine($"{student} is {age} years old.")
Else
	Console.WriteLine($"{student} does not exist in the dictionary.")
End If
$vbLabelText   $csharpLabel

Dieser Code bietet eine nahezu identische Funktionalität wie das ContainsKey-Methodenbeispiel, ist jedoch effizienter, da er den Schlüssel nur einmal abfragt.

TryGetValue In Aktion Codebeispiel

Um die TryGetValue-Methode besser zu verstehen, lassen Sie uns ein praktisches Codebeispiel erkunden. Nehmen wir eine Schuldatenbank, in der jeder Schüler eine eindeutige ID und einen entsprechenden Namen hat. Diese Daten werden in einem Dictionary mit der Schüler-ID als Schlüssel und dem Namen als Wert gespeichert.

Dictionary<int, string> studentNames = new Dictionary<int, string>
{
    {1, "Alice"},
    {2, "Bob"},
    {3, "Charlie"}
};
Dictionary<int, string> studentNames = new Dictionary<int, string>
{
    {1, "Alice"},
    {2, "Bob"},
    {3, "Charlie"}
};
Dim studentNames As New Dictionary(Of Integer, String) From {
	{1, "Alice"},
	{2, "Bob"},
	{3, "Charlie"}
}
$vbLabelText   $csharpLabel

In diesem Fall möchten Sie den Namen des Schülers mit der ID 2 abrufen, aber auch sicherstellen, dass der Schüler mit dieser ID in der Datenbank existiert.

Traditionell könnten Sie zuerst die ContainsKey-Methode verwenden, um zu überprüfen, ob der Schlüssel (Studenten-ID 2) existiert, und dann auf das Dictionary zugreifen, um den entsprechenden Wert (Studentenname) zu erhalten. Mit der TryGetValue-Methode können Sie dies jedoch in einem einzigen Schritt erreichen.

Die TryGetValue-Methode nimmt zwei Argumente: den Schlüssel, den Sie suchen, und ein out-Parameter, der den Wert hält, der mit diesem Schlüssel verknüpft ist, falls er existiert. Wenn der Schlüssel gefunden wird, gibt die Methode true zurück und weist den entsprechenden Wert dem out-Parameter zu. Falls nicht, wird es false zurückgeben und der out-Parameter wird den Standardwert für seinen Typ annehmen.

int i = 2; // Student ID
if (studentNames.TryGetValue(i, out string value))
{
    Console.WriteLine($"The name of the student with ID {i} is {value}.");
}
else
{
    Console.WriteLine($"No student with ID {i} exists in the dictionary.");
}
int i = 2; // Student ID
if (studentNames.TryGetValue(i, out string value))
{
    Console.WriteLine($"The name of the student with ID {i} is {value}.");
}
else
{
    Console.WriteLine($"No student with ID {i} exists in the dictionary.");
}
Dim i As Integer = 2 ' Student ID
Dim value As String
If studentNames.TryGetValue(i, value) Then
	Console.WriteLine($"The name of the student with ID {i} is {value}.")
Else
	Console.WriteLine($"No student with ID {i} exists in the dictionary.")
End If
$vbLabelText   $csharpLabel

In diesem Fall sucht die TryGetValue-Methode nach dem Schlüssel 2 im Dictionary studentNames. Findet es den Schlüssel, weist es den entsprechenden Wert der value-Variablen (dem Namen des Schülers) zu, und die Methode gibt true zurück. Dann gibt das Programm aus: "Der Name des Schülers mit der ID 2 ist Bob"

Wenn die TryGetValue-Methode den Schlüssel 2 nicht findet, wird sie den Standardwert für einen String (welcher null ist) der Variablen value zuweisen, und die Methode wird false zurückgeben. Der Code geht dann zum else-Block und gibt aus: „Kein Student mit der ID 2 existiert im Wörterbuch.“

TryGetValue vereinfacht Ihren Code, indem es die Überprüfung auf Schlüsseldasein und das Abrufen des Wertes in einem einzigen Schritt kombiniert. Darüber hinaus bietet es eine Leistungssteigerung, insbesondere bei größeren Dictionaries, da es die Notwendigkeit mehrerer Schlüssel-Nachschlageoperationen eliminiert.

Die Iron Suite stellt sich vor

Wenn Sie in C# weiter vorankommen, stehen Ihnen viele Tools und Bibliotheken zur Verfügung, die Ihre Programmierfähigkeiten erheblich verbessern können. Dazu gehören die Iron-Bibliotheken, eine Reihe von Tools, die speziell zur Erweiterung der Funktionalität von C#-Anwendungen entwickelt wurden. Dazu gehören IronPDF, IronXL, IronOCR und IronBarcode. Jede dieser Bibliotheken verfügt über einen einzigartigen Funktionsumfang, und alle bieten erhebliche Vorteile, wenn sie zusammen mit Standard-C# verwendet werden.

IronPDF

C# Dictionary `TryGetValue` (Wie es für Entwickler funktioniert) Abbildung 1

Entdecken Sie IronPDF für die PDF-Erstellung in .NET ist eine C#-Bibliothek, die entwickelt wurde, um PDF-Dateien aus HTML zu erstellen, zu bearbeiten und PDF-Inhalte in .NET-Anwendungen zu extrahieren. Mit IronPDF können Sie programmatisch PDF-Berichte erstellen, PDF-Formulare ausfüllen und PDF-Dokumente bearbeiten. Die Bibliothek bietet auch Funktionen für die Konvertierung von HTML in PDF, wodurch die Umwandlung vorhandener HTML-Inhalte in PDF-Dateien erleichtert wird.

Das Highlight von IronPDF ist seine HTML zu PDF-Funktion, die alle Layouts und Stile intakt hält. Es ermöglicht Ihnen, PDFs aus Webinhalten zu erstellen, die sich für Berichte, Rechnungen und Dokumentationen eignen. HTML-Dateien, URLs und HTML-Strings können nahtlos in PDFs 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
$vbLabelText   $csharpLabel

Stellen Sie sich im Zusammenhang mit unserem Thema ein Szenario vor, in dem Sie Schülerdaten aus einem Dictionary abrufen und einen PDF-Bericht erstellen möchten. TryGetValue könnte die erforderlichen Daten effizient abrufen und dann IronPDF nutzen, um das PDF-Dokument zu erstellen.

IronXL

C# Dictionary `TryGetValue` (Wie es für Entwickler funktioniert) Abbildung 2

Erkunden Sie IronXL für Excel-Interaktionen ist eine Excel-Bibliothek für C# und .NET. Es ermöglicht Entwicklern das Lesen, Schreiben und Erstellen von Excel-Dateien in .NET-Anwendungen ohne Interop. Es ist perfekt für Szenarien, in denen Sie Daten aus einer Excel-Tabelle exportieren oder importieren müssen.

Zum Thema TryGetValue: Angenommen, Sie haben ein Dictionary, in dem Schlüssel Produkt-IDs darstellen und Werte deren Mengen repräsentieren. Sie könnten TryGetValue verwenden, um die Menge eines bestimmten Produkts abzurufen und anschließend IronXL verwenden, um diese Menge in einer Excel-Inventarverwaltungstabelle zu aktualisieren.

IronOCR

C# Dictionary `TryGetValue` (Wie es für Entwickler funktioniert) Abbildung 3

Entfesseln Sie die Kraft von IronOCR für Texterkennung ist eine fortschrittliche OCR- (Optische Zeichenerkennung) und Barcode-Lesebibliothek für .NET und C#. Es ermöglicht Entwicklern, Text und Barcodes aus Bildern und PDFs in .NET-Anwendungen zu lesen. Dies kann besonders nützlich sein, wenn Sie Daten aus gescannten Dokumenten oder Bildern extrahieren und in Ihrem Code verarbeiten müssen.

Stellen Sie sich ein Szenario vor, in dem Sie IronOCR zum Extrahieren von Studenten-IDs aus gescannten Dokumenten verwendet haben. Nach der Verarbeitung speichern Sie die IDs und die entsprechenden Schülerdaten in einem Dictionary. Beim Abrufen der Details eines bestimmten Schülers könnte TryGetValue verwendet werden, um die Daten effizient aus dem Dictionary zu holen.

IronBarcode

C# Dictionary `TryGetValue` (Wie es für Entwickler funktioniert) Abbildung 4

Erfahren Sie mehr über IronBarcode für Barcode-Lösungen ist eine Bibliothek zum Lesen und Schreiben von Barcodes für .NET. Mit IronBarcode können Entwickler verschiedene Barcode- und QR-Code-Formate erzeugen und lesen. Es ist ein leistungsfähiges Werkzeug zur Kodierung und Dekodierung von Daten in einem kompakten, maschinenlesbaren Format.

Stellen Sie sich ein praktisches Szenario vor: Sie verwenden Barcodes, um Produktinformationen in einem Einzelhandelssystem zu speichern. Jeder Strichcode könnte einer eindeutigen Produkt-ID entsprechen, die als Schlüssel in einem Wörterbuch gespeichert ist. Wenn ein Barcode gescannt wird, können Sie TryGetValue verwenden, um schnell die zugehörigen Produktdetails aus dem Dictionary abzurufen und anzuzeigen.

Schlussfolgerung

Da wir die Funktionalitäten der Iron-Bibliotheken in Verbindung mit den standardmäßigen C#-Funktionen wie der TryGetValue-Methode untersucht haben, ist klar, dass diese Tools Ihren Entwicklungsprozess erheblich verbessern können. Egal, ob Sie mit PDFs, Excel-Dateien, OCR oder Barcodes arbeiten, die Iron Suite bietet eine auf Ihre Bedürfnisse zugeschnittene Lösung.

Noch verlockender ist, dass jedes dieser Produkte eine kostenlose Testversion der Iron Software Products bietet, die es Ihnen ermöglicht, die Funktionen kostenfrei zu erkunden und auszuprobieren. Wenn Sie sich entscheiden, die Bibliotheken weiter zu nutzen, beginnt die Lizenz bei $749 für jedes Produkt. Wenn Sie jedoch an mehreren Iron Bibliotheken interessiert sind, können Sie die Iron Suite zum Preis von nur zwei Einzelprodukten erwerben, was noch mehr Vorteile bietet.

Chipego
Software-Ingenieur
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# Standard-Parameter (So funktioniert es für Entwickler)
NÄCHSTES >
C# Round (Wie es für Entwickler funktioniert)