IRONSOFTWAREHOME
开发者更新

C# 字典 Trygetvalue(开发者如何使用)

Jacob Mellor,Team Iron 的首席技术官
Jacob Mellor
Updated: 2026年4月21日

C# 是一种多功能且强大的语言,提供了许多功能。 其中之一是 C# Dictionary。

理解C#字典的基础知识

在深入了解TryGetValue方法之前,首先需要理解C#中Dictionary是什么。 简单来说,Dictionary 是一个键/值对的集合。 例如,您可能有一个 Dictionary,其中键是学生的姓名(字符串值),而值是他们相应的年龄(整数值)。

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

Dictionary 中的键是唯一的。 您可以访问键以获取相应的值,这使得 Dictionary 在查找功能上非常高效。

传统方法:ContainsKey方法

在处理 C# Dictionary 时,一个常见的任务是获取与特定键关联的值。 然而,直接访问一个不存在的键可能会抛出KeyNotFoundException,中断程序的运行。 为了避免这种情况,通常的做法是在 Dictionary 中检查指定的键是否存在。 这就是ContainsKey方法派上用场的时候。

ContainsKey方法是一个简单直观的功能,用于检查Dictionary中是否存在某个键。 以下是ContainsKey方法的基本语法:

Dictionary<TKey, TValue>.ContainsKey(TKey key)

它将键作为参数并返回一个布尔值。 如果键在Dictionary中,它会返回true; 如果不在,则返回false

考虑以下示例,其中我们有一个以学生姓名为键,其对应年龄为值的 Dictionary。

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

现在,如果您想获取名为"Alice"的学生的年龄,您首先会使用ContainsKey方法检查"Alice"是否为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.");
}

在这种情况下,程序将打印"Alice is 20 years old"。如果您尝试获取一个不在 Dictionary 中的学生的年龄,ContainsKey 方法会阻止抛出 KeyNotFoundException,并改为打印学生不存在的信息。

然而,尽管 ContainsKey 方法很有用,但它并不总是最高效的,因为需要在 Dictionary 上执行两次查找操作:一次用于 ContainsKey 方法,一次用于检索值。 这可能会消耗时间,尤其是在处理大型 Dictionary 时。

虽然 ContainsKey 方法是在 Dictionary 中找不到指定键时处理异常的一种简单直观的方式,但值得考虑像 TryGetValue 这样的替代方法,它们可以在性能更佳的情况下实现类似功能。 我们将在接下来的章节中更详细地讨论 TryGetValue

结合验证与检索的TryGetValue

这就是TryGetValue方法方便之处。 TryGetValue方法将验证和值检索合二为一,以单步骤提供几乎相同的代码功能,但性能有所增强。

TryGetValue方法需要两个参数:

  1. 您要查找的键。
  2. 一个 out 参数,如果键存在,将保存该键的值。

语法如下:

Dictionary<TKey, TValue>.TryGetValue(TKey key, out TValue value)

out 关键字用于表示此方法将更改 value 参数。 如果找不到指定的键,out 值将是值类型的默认值(整数为 0,引用类型为 null)。 否则,它将保存与提供的键相对应的值。

以下是如何使用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.");
}

此代码提供了与ContainsKey方法示例几乎相同的功能,但更高效,因为它只查询了一次键。

TryGetValue实战代码示例

为了更好地理解TryGetValue方法,让我们探讨一个实际代码示例。 考虑一个学校数据库,其中每个学生都有一个唯一的 ID 和相应的名字。 这些数据存储在一个以学生 ID 为键,名字为值的 Dictionary 中。

Dictionary<int, string> studentNames = new Dictionary<int, string>
{
    {1, "Alice"},
    {2, "Bob"},
    {3, "Charlie"}
};

在这种情况下,假设您想检索 ID 为 2 的学生的名字,但您也希望确保该 ID 的学生存在于数据库中。

传统上,您可能会先使用ContainsKey方法检查键(学生ID 2)是否存在,然后访问Dictionary获取对应的值(学生姓名)。 然而,使用TryGetValue方法,您可以在一步内完成此操作。

TryGetValue 方法接受两个参数:您要查找的键,以及一个 out 参数,如果该键存在,它将保存与该键关联的值。 如果找到该键,方法将返回 true 并将对应的值赋给 out 参数。 如果没有找到,它将返回 false,并且 out 参数将取其类型的默认值。

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.");
}

在这种情况下,TryGetValue 方法在 studentNames Dictionary 中查找键 2。 如果找到该键,就会将对应的值(学生姓名)赋给 value 变量,并且方法返回 true。 然后,程序打印出"ID 为 2 的学生名字是 Bob。"

如果 TryGetValue 方法找不到键 2,它将把字符串的默认值(即 null)赋给 value 变量,并且方法将返回 false。 然后代码进入 else 块,打印出"No student with ID 2 exists in the dictionary"。

TryGetValue通过将键存在检查和值检索合二为一来简化您的代码。此外,通过消除多次键查找操作,尤其是在较大的Dictionary中,它提供了性能提升。

介绍 Iron Suite

随着您在 C# 旅程中不断进步,您将发现许多工具和库可以显著增强您的编程能力。 其中包括 Iron 库,一套专门设计用于扩展 C# 应用程序功能的工具。 它们包括 IronPDF, IronXL, IronOCR 和 IronBarcode。 每个库都有一套独特的功能,它们都在与标准 C# 一起使用时提供了显著优势。

IronPDF

C# Dictionary TryGetValue (开发人员如何使用) 图1

探索 IronPDF 在 .NET 中的 PDF 创建 是一个 C# 库,设计用于从 HTML 创建 PDF 文件,编辑和提取 .NET 应用程序中的 PDF 内容。 使用 IronPDF,您可以以编程方式生成 PDF 报告,填写 PDF 表单并处理 PDF 文档。 该库还提供 HTML 转 PDF 的功能,使得将现有 HTML 内容转换为 PDF 变得容易。

IronPDF 的亮点是其 HTML 转 PDF 功能,保持所有布局和样式完整。 它允许您从网络内容创建 PDF,适用于报告、发票和文档。 HTML 文件、URL 和 HTML 字符串可以无缝地转换为 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");
    }
}

在我们的话题背景下,想象一下您正在从 Dictionary 中检索学生数据并想要生成 PDF 报告的场景。 TryGetValue可以高效地获取所需数据,然后利用IronPDF创建PDF文档。

了解更多关于 IronXL 是一个 Excel 库,可帮助处理 Excel 文件而无需安装 Excel。

C# Dictionary TryGetValue (开发人员如何使用) 图2

探索 IronXL 进行 Excel 互动 是一个用于 C# 和 .NET 的 Excel 库。 它使开发者能够在 .NET 应用程序中读、写和创建 Excel 文件,而无需 Interop。这对于需要从 Excel 电子表格导出或导入数据的场景非常理想。

关于TryGetValue,假设您有一个Dictionary,其中键代表产品ID,值代表它们的数量。 您可以使用TryGetValue来检索特定产品的数量,然后使用IronXL在Excel库存管理电子表格中更新该数量。

IronOCR

C# Dictionary TryGetValue (开发人员如何使用) 图3

释放 IronOCR 的文本识别能力 是一个高级的用于 .NET 和 C# 的 OCR(光学字符识别)和条码读取库。 它允许开发者在 .NET 应用程序中从图像和 PDF 中读取文本和条码。 当您需要从扫描文档或图像中提取数据并在代码中处理时,这尤其有用。

考虑一个场景,您已使用 IronOCR 从扫描文档中提取了学生 ID。 处理后,您将 ID 和相应的学生详细信息存储在一个 Dictionary 中。 在检索某个学生的详细信息时,TryGetValue可以用于高效地从Dictionary中获取数据。

开始使用 IronBarcode 是一个专为 .NET Framework设计的条码读取和写入库。

C# Dictionary TryGetValue (开发人员如何使用) 图4

了解 IronBarcode 的条码解决方案 是一个用于 .NET 的条码读取和写入库。 通过 IronBarcode,开发者可以生成和读取各种条码和 QR 码格式。 这是编码和解码数据的强大工具,格式紧凑且易于机器读取。

在实际场景中,假设您正在使用条码来存储零售系统中的产品信息。 每个条码可以对应一个存储为 Dictionary 键的唯一产品 ID。 当扫描条形码时,您可以使用TryGetValue快速获取并显示与Dictionary中的产品相关的详细信息。

结论

当我们探讨Iron库与标准C#功能(如TryGetValue方法)的功能时,这些工具显然能显著增强您的开发过程。 无论您是在处理 PDF、Excel 文件、OCR 还是条码,Iron Suite 都有针对您的需求量身定制的解决方案。

更令人兴奋的是,每个这些产品都提供Iron Software产品免费试用,让您可以免费探索和试验这些功能。如果您决定继续使用这些库,许可证从$999起每个产品开始。 但是,如果您对多个 Iron 库感兴趣,还有更多的价值,因为您可以以两个单独产品的价格购买完整的 Iron Suite。

Jacob Mellor,Team Iron 的首席技术官
首席技术官

Jacob Mellor 是 Iron Software 的首席技术官,也是一位开创 C# PDF 技术的有远见的工程师。作为 Iron Software 核心代码库的原始开发者,他从公司成立之初就开始塑造公司的产品架构,与首席执行官 Cameron Rimington 一起将公司转变为一家拥有 50 多名员工的公司,为 NASA、特斯拉和全球政府机构提供服务。

相关文章

Key in blue circle

立即获取免费的 30 天试用版密钥

Your trial license will be sent to your email address

无任何限制。100% 解锁。无需信用卡。

bullet_checked无需信用卡或创建账户无任何限制。100% 解锁。无需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
预约您的免费现场演示
Booking Badge

深受全球数百万工程师信赖

Iron Software 的客户徽标
获取您的无义务咨询
填写下面的表格或通过sales@ironsoftware.com
您的资料将始终保密。
深受全球数百万工程师信赖
Iron Software 的客户徽标
立即获取您的免费30 天试用密钥
无需信用卡或创建账户