Passer au contenu du pied de page
.NET AIDE

C# Dictionnaire TryGetValue (Comment ça fonctionne pour les développeurs)

C# est un langage polyvalent et puissant qui offre de nombreuses fonctionnalités. Parmi elles, il y a le Dictionnaire C#.

Comprendre les bases du Dictionnaire C

Avant de plonger dans la méthode TryGetValue, il est crucial de comprendre ce qu'est un Dictionnaire en C#. En termes simples, un Dictionnaire est une collection de paires clé/valeur. Par exemple, vous pouvez avoir un Dictionnaire où les clés sont les noms des étudiants (valeurs de type chaîne), et les valeurs sont leurs âges correspondants (valeurs entières).

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

Les clés dans un Dictionnaire sont uniques. Vous pouvez accéder aux clés pour récupérer la valeur correspondante, ce qui rend les Dictionnaires incroyablement efficaces pour la fonctionnalité de recherche.

L'approche conventionnelle : Méthode ContainsKey

Lorsque vous travaillez avec des Dictionnaires C#, une tâche courante est de récupérer une valeur associée à une clé particulière. Cependant, accéder directement à une clé qui n'existe pas peut générer une KeyNotFoundException, interrompant le flux de votre programme. Pour éviter cela, il est pratique courante de vérifier si la clé spécifiée existe dans le Dictionnaire. C'est là que la méthode ContainsKey entre en jeu.

La méthode ContainsKey est une fonction simple et intuitive qui vérifie si une certaine clé est présente dans le Dictionnaire. Voici la syntaxe de base de la méthode ContainsKey :

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

Elle prend la clé en paramètre et renvoie une valeur booléenne. Si la clé est dans le Dictionnaire, elle renverra true ; sinon, elle renverra false.

Considérez l'exemple suivant où nous avons un Dictionnaire avec les noms des étudiants comme clés et leurs âges correspondants comme valeurs.

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

Maintenant, si vous souhaitez obtenir l'âge d'une étudiante nommée "Alice", vous utiliserez d'abord la méthode ContainsKey pour vérifier si "Alice" est une clé dans le Dictionnaire.

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

Dans ce cas, le programme imprimera "Alice a 20 ans." Si vous essayez d'obtenir l'âge d'un étudiant non présent dans le Dictionnaire, la méthode ContainsKey empêchera une KeyNotFoundException d'être lancée et imprimera à la place un message indiquant que l'étudiant n'existe pas.

Cependant, bien que la méthode ContainsKey puisse être utile, elle n'est pas toujours la plus efficace car deux opérations de recherche sont effectuées dans le Dictionnaire : une pour la méthode ContainsKey et une pour récupérer la valeur. Cela peut être chronophage, surtout lorsqu'il s'agit de grands Dictionnaires.

Bien que la méthode ContainsKey soit un moyen simple et intuitif de gérer les exceptions lorsque la clé spécifiée n'est pas trouvée dans un Dictionnaire, il vaut la peine de considérer des méthodes alternatives comme TryGetValue, qui peuvent atteindre une fonctionnalité similaire avec de meilleures performances. Nous discuterons de TryGetValue en détail dans les sections suivantes.

Combiner vérification et récupération avec TryGetValue

C'est là que la méthode TryGetValue est utile. La méthode TryGetValue combine la vérification et la récupération de la valeur en une seule étape, offrant une fonctionnalité de code presque identique mais avec des performances améliorées.

La méthode TryGetValue nécessite deux paramètres :

  1. La clé que vous recherchez.
  2. Un paramètre out qui contiendra la valeur si la clé existe.

Voici la syntaxe :

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

Le mot-clé out est utilisé pour signifier que cette méthode va modifier le paramètre value. La valeur out sera la valeur par défaut du type de valeur si la clé spécifiée n'est pas trouvée (0 pour les entiers, null pour les types de référence). Sinon, elle contiendra la valeur qui correspond à la clé fournie.

Voici comment utiliser 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

Ce code fournit une fonctionnalité presque identique à l'exemple de la méthode ContainsKey, mais il est plus efficace car il ne recherche la clé qu'une seule fois.

Exemple de code en action de TryGetValue

Pour mieux comprendre la méthode TryGetValue, explorons un exemple de code pratique. Considérez une base de données scolaire où chaque étudiant a un ID unique et un nom correspondant. Ces données sont stockées dans un Dictionnaire avec l'ID de l'étudiant comme clé et le nom comme valeur.

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

Dans ce cas, disons que vous voulez récupérer le nom de l'étudiant avec l'ID 2, mais vous voulez également vous assurer que l'étudiant avec cet ID existe dans la base de données.

Traditionnellement, vous utiliseriez d'abord la méthode ContainsKey pour vérifier si la clé (ID de l'étudiant 2) existe, puis vous accéderiez au Dictionnaire pour obtenir la valeur correspondante (nom de l'étudiant). Cependant, avec la méthode TryGetValue, vous pouvez accomplir cela en une seule étape.

La méthode TryGetValue prend deux arguments : la clé que vous recherchez et un paramètre out qui contiendra la valeur associée à cette clé si elle existe. Si la clé est trouvée, la méthode renverra true et assignera la valeur correspondante au paramètre out. Sinon, elle renverra false, et le paramètre out prendra la valeur par défaut de son type.

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

Dans ce cas, la méthode TryGetValue recherche la clé 2 dans le Dictionnaire studentNames. Si elle trouve la clé, elle assigne la valeur correspondante à la variable value (le nom de l'étudiant), et la méthode renvoie true. Ensuite, le programme imprime : "Le nom de l'étudiant avec l'ID 2 est Bob."

Si la méthode TryGetValue ne trouve pas la clé 2, elle assignera la valeur par défaut pour une chaîne (qui est null) à la variable value, et la méthode renverra false. Le code va alors au bloc else, imprimant : "Aucun étudiant avec l'ID 2 n'existe dans le dictionnaire."

TryGetValue simplifie votre code en combinant la vérification de l'existence de la clé et la récupération de la valeur en une seule étape. De plus, elle offre un gain de performance, en particulier avec les grands Dictionnaires, en éliminant le besoin de plusieurs opérations de recherche de clé.

Introduction de Iron Suite

Au fur et à mesure que vous progressez dans votre parcours C#, vous trouverez de nombreux outils et bibliothèques à votre disposition qui peuvent améliorer considérablement vos capacités de programmation. Parmi ceux-ci figurent les bibliothèques Iron, une suite d'outils spécialement conçus pour étendre la fonctionnalité des applications C#. Elles incluent IronPDF, IronXL, IronOCR et IronBarcode. Chacune de ces bibliothèques a un ensemble de fonctionnalités unique, et toutes offrent des avantages significatifs lorsqu'elles sont utilisées en conjonction avec du C# standard.

IronPDF

Dictionnaire C# `TryGetValue` (Comment cela fonctionne pour les développeurs) Figure 1

Discover IronPDF for PDF Creation in .NET is a C# library designed to créer des fichiers PDF à partir de HTML, éditer et extraire le contenu PDF dans les applications .NET. Avec IronPDF, vous pouvez générer des rapports PDF de manière programmable, remplir des formulaires PDF et manipuler des documents PDF. La bibliothèque offre également des fonctionnalités de conversion HTML en PDF, ce qui permet de convertir facilement le contenu HTML existant en PDF.

Le point fort d'IronPDF est sa fonction HTML vers PDF, qui conserve tous les agencements et styles intacts. Il vous permet de créer des PDF à partir de contenu web, adaptés aux rapports, factures et documentation. Les fichiers HTML, les URLs et les chaînes HTML peuvent être convertis en PDFs sans problème.

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

Dans le contexte de notre sujet, imaginez un scénario où vous récupérez des données d'étudiants à partir d'un Dictionnaire et souhaitez générer un rapport PDF. TryGetValue pourrait récupérer les données nécessaires efficacement, puis utiliser IronPDF pour créer le document PDF.

IronXL

Dictionnaire C# `TryGetValue` (Comment cela fonctionne pour les développeurs) Figure 2

Explorez IronXL pour les interactions avec Excel est une bibliothèque Excel pour C# et .NET. Elle permet aux développeurs de lire, écrire et créer des fichiers Excel dans des applications .NET sans Interop. Elle est parfaite pour les scénarios où vous avez besoin d'exporter ou d'importer des données depuis une feuille de calcul Excel.

En ce qui concerne TryGetValue, supposons que vous ayez un Dictionnaire où les clés représentent les identifiants de produit et les valeurs représentent leurs quantités. Vous pourriez utiliser TryGetValue pour récupérer la quantité d'un produit spécifique, puis utiliser IronXL pour mettre à jour cette quantité dans une feuille de calcul de gestion des stocks Excel.

IronOCR

Dictionnaire C# `TryGetValue` (Comment cela fonctionne pour les développeurs) Figure 3

Libérez la puissance d'IronOCR pour la reconnaissance de texte est une bibliothèque avancée de reconnaissance optique de caractères (OCR) et de lecture de codes-barres pour .NET et C#. Elle permet aux développeurs de lire le texte et les codes-barres à partir d'images et de PDF dans les applications .NET. Cela peut être particulièrement utile lorsque vous devez extraire des données à partir de documents ou d'images scannés et les utiliser dans votre code.

Considérez un scénario où vous avez utilisé IronOCR pour extraire les identifiants d'étudiants à partir de documents scannés. Après traitement, vous stockez les identifiants et les détails correspondants des étudiants dans un Dictionnaire. Lors de la récupération des détails d'un étudiant particulier, TryGetValue pourrait être utilisé pour récupérer les données du Dictionnaire efficacement.

IronBarcode

Dictionnaire C# `TryGetValue` (Comment cela fonctionne pour les développeurs) Figure 4

Découvrez IronBarcode pour les solutions de code-barres est une bibliothèque de lecture et d'écriture de codes-barres pour .NET. Avec IronBarcode, les développeurs peuvent générer et lire divers formats de codes-barres et de codes QR. C'est un outil puissant pour encoder et décoder des données dans un format compact lisible par machine.

Dans un scénario pratique, imaginez que vous utilisez des codes-barres pour stocker des informations produit dans un système de vente au détail. Chaque code-barres pourrait correspondre à un identifiant de produit unique stocké comme clé dans un Dictionnaire. Lorsqu'un code-barres est scanné, vous pourriez utiliser TryGetValue pour récupérer et afficher rapidement les détails du produit associés du Dictionnaire.

Conclusion

Comme nous avons exploré les fonctionnalités des bibliothèques Iron en conjonction avec les fonctionnalités standard C# comme la méthode TryGetValue, il est clair que ces outils peuvent améliorer considérablement votre processus de développement. Que vous travailliez avec des PDF, des fichiers Excel, de l'OCR ou des codes-barres, la Iron Suite a une solution adaptée à vos besoins.

Ce qui est encore plus alléchant, c'est que chacun de ces produits offre un essai gratuit des produits Iron Software, vous permettant d'explorer et d'expérimenter les caractéristiques sans frais. Si vous décidez de continuer à utiliser les bibliothèques, la licence commence à partir de $799 pour chaque produit. Cependant, il y a encore plus de valeur à trouver si vous êtes intéressé par plusieurs bibliothèques Iron, car vous pouvez acheter l'intégralité de la Iron Suite au prix de seulement deux produits individuels.

Questions Fréquemment Posées

Comment la méthode TryGetValue améliore-t-elle les performances dans les applications C# ?

La méthode TryGetValue améliore les performances en combinant la vérification des clés et la récupération des valeurs en une seule opération. Cela réduit le besoin de multiples recherches et augmente l'efficacité, surtout lorsqu'on travaille avec de grands ensembles de données.

Quelle est la différence entre les méthodes ContainsKey et TryGetValue dans C# ?

ContainsKey vérifie si une clé existe dans le dictionnaire sans récupérer sa valeur, tandis que TryGetValue vérifie l'existence de la clé et récupère la valeur si elle est présente, le tout en une seule étape, rendant ainsi le processus plus efficace.

Les bibliothèques Iron peuvent-elles être intégrées aux opérations de dictionnaire C# ?

Oui, les bibliothèques Iron, telles qu'IronPDF, IronXL, IronOCR et IronBarcode, peuvent être intégrées aux opérations de dictionnaire C# pour améliorer les applications. Par exemple, TryGetValue peut être utilisé pour gérer efficacement les données lors de la génération de rapports dynamiques avec IronPDF.

Comment IronPDF peut-il améliorer la génération de documents dans une application .NET ?

IronPDF permet la création, l'édition et la conversion de PDF à partir de HTML, en conservant la mise en page et le style du document. Il est particulièrement utile pour générer des rapports, des factures et d'autres documents de manière programmatique au sein d'une application .NET.

Quels sont les avantages d'utiliser IronXL pour la gestion des feuilles de calcul dans C# ?

IronXL offre des capacités de lecture, d'écriture et de création de fichiers Excel sans besoin d'Interop, ce qui le rend idéal pour les tâches d'exportation et d'importation de données dans les applications .NET.

Comment IronOCR facilite-t-il l'extraction de données dans les applications C# ?

IronOCR permet l'extraction de texte et de codes-barres à partir d'images et de PDF, ce qui le rend utile pour le traitement de documents numérisés et l'intégration des données extraites dans les applications C#.

Quel rôle jouent les bibliothèques IronBarcode dans le développement en C# ?

IronBarcode permet la génération et la lecture de codes-barres et de codes QR, offrant un moyen d'encoder et de décoder les données dans un format lisible par machine, ce qui est important pour la gestion des stocks et d'autres applications en C#.

Pourquoi les développeurs devraient-ils utiliser la Iron Suite dans leurs projets C# ?

La Iron Suite offre un ensemble d'outils complet pour les fonctionnalités PDF, Excel, OCR et Barcode qui améliorent la capacité d'un développeur à gérer une large gamme de tâches efficacement au sein des applications C#.

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes ...

Lire la suite