在生产环境中测试,无水印。
随时随地满足您的需求。
获得30天的全功能产品。
几分钟内就能启动并运行。
在您的产品试用期间,全面访问我们的支持工程团队。
数据对是一种简单的数据结构,用于保存两个相关的值。 它提供了一种将两个不同的数据捆绑在一起的便捷方式。 当一个方法需要返回两个值或处理键值关联时,通常会用到对。
在 C# 中,开发人员经常使用元组(元组<T1, T2>`)用于配对值。 但是,元组是不可变的,其元素通过 Item1 和 Item2 等属性进行访问,如果大量使用,可能会导致代码的可读性降低。 这就是自定义 Pair 类的用武之地。
如果您需要一个结构来容纳两个相关对象,并且数据隐藏不是优先考虑的问题,您可以在代码中使用 Pair 类。 Pair 类没有封装其对象引用。 在翻译过程中,译者不能将这些工具作为公共类的字段,而是将它们作为公共类字段直接暴露给所有调用代码。
这种设计选择允许直接访问所包含的对象,而不会产生封装的开销。 此外,在文章的最后,我们将探讨如何用于生成 PDF 的 IronPDF从Iron Software 概述可用于生成 PDF 文档。
C# 7.0 引入了元组语法改进,使元组更易于使用。 以下是如何声明和初始化元组:
// Tuple declaration
var person = (name: "John", age: 30);
// Accessing tuple elements
Console.WriteLine($"Name: {person.name}, Age: {person.age}");
// Tuple deconstruction
var (name, age) = person;
Console.WriteLine($"Name: {name}, Age: {age}");
// Tuple declaration
var person = (name: "John", age: 30);
// Accessing tuple elements
Console.WriteLine($"Name: {person.name}, Age: {person.age}");
// Tuple deconstruction
var (name, age) = person;
Console.WriteLine($"Name: {name}, Age: {age}");
元组允许您使用简洁的语法表达复杂的数据结构,而无需定义自定义类或结构体。
Tuples 是一种轻量级数据结构,适用于需要临时或中间存储数据的场景。
使用元组语法,您可以隐式命名元组元素,从而提高代码的可读性并减少注释的需要。
public (int, int) Divide(int dividend, int divisor)
{
int quotient = dividend / divisor;
int remainder = dividend % divisor;
return (quotient, remainder);
}
var result = Divide(10, 3);
Console.WriteLine($"Quotient: {result.Item1}, Remainder: {result.Item2}");
public (int, int) Divide(int dividend, int divisor)
{
int quotient = dividend / divisor;
int remainder = dividend % divisor;
return (quotient, remainder);
}
var result = Divide(10, 3);
Console.WriteLine($"Quotient: {result.Item1}, Remainder: {result.Item2}");
public (string, string) GetNameAndSurname()
{
// Retrieve name and surname from a data source
return ("John", "Doe");
}
var (name, surname) = GetNameAndSurname();
Console.WriteLine($"Name: {name}, Surname: {surname}");
public (string, string) GetNameAndSurname()
{
// Retrieve name and surname from a data source
return ("John", "Doe");
}
var (name, surname) = GetNameAndSurname();
Console.WriteLine($"Name: {name}, Surname: {surname}");
var point = (x: 10, y: 20);
var color = (r: 255, g: 0, b: 0);
var person = (name: "Alice", age: 25);
var point = (x: 10, y: 20);
var color = (r: 255, g: 0, b: 0);
var person = (name: "Alice", age: 25);
虽然 C# 7.0 图元具有显著的优势,但也有一些限制和注意事项需要牢记:
public class Pair<T1, T2>
{
public T1 First { get; set; }
public T2 Second { get; set; }
public Pair(T1 first, T2 second)
{
First = first;
Second = second;
}
}
public class Pair<T1, T2>
{
public T1 First { get; set; }
public T2 Second { get; set; }
public Pair(T1 first, T2 second)
{
First = first;
Second = second;
}
}
这里的类型是在使用时定义的,两个属性是作为公共属性公开的。
现在,让我们在下面的示例中探讨一些常见的使用案例,看看 Pair 类在这些案例中的作用:
Pair<int, int> coordinates = new Pair<int, int>(10, 20); // new instance
Console.WriteLine($"X: {coordinates.First}, Y: {coordinates.Second}");
Pair<int, int> coordinates = new Pair<int, int>(10, 20); // new instance
Console.WriteLine($"X: {coordinates.First}, Y: {coordinates.Second}");
public Pair<int, int> Divide(int dividend, int divisor)
{
int quotient = dividend / divisor;
int remainder = dividend % divisor;
return new Pair<int, int>(quotient, remainder);
}
Pair<int, int> result = Divide(10, 3);
Console.WriteLine($"Quotient: {result.First}, Remainder: {result.Second}");
public Pair<int, int> Divide(int dividend, int divisor)
{
int quotient = dividend / divisor;
int remainder = dividend % divisor;
return new Pair<int, int>(quotient, remainder);
}
Pair<int, int> result = Divide(10, 3);
Console.WriteLine($"Quotient: {result.First}, Remainder: {result.Second}");
Pair<string, int> keyValue = new Pair<string, int>("Age", 30);
Console.WriteLine($"Key: {keyValue.First}, Value: {keyValue.Second}");
Pair<string, int> keyValue = new Pair<string, int>("Age", 30);
Console.WriteLine($"Key: {keyValue.First}, Value: {keyValue.Second}");
键值对提供了一种简单高效的数据关联方式。 在 C# 中,处理键值对的主要工具是 Dictionary<TKey, TValue>
类,这是一种用途广泛、功能强大的集合类型。
键值对是一种将唯一的键与值关联起来的数据结构。 这种关联可以根据数据的唯一标识符对数据进行有效检索和操作。 在 C# 中,键值对常用于缓存、配置管理和数据存储等任务。
Dictionary<TKey, TValue>
;C# 中的 Dictionary<TKey, TValue>
类是存储键值对的通用集合。 它根据键值提供快速查找,广泛用于管理关联数据。
Dictionary<string, int> ages = new Dictionary<string, int>();
ages["Alice"] = 30;
ages["Bob"] = 35;
ages["Charlie"] = 25;
Dictionary<string, int> ages = new Dictionary<string, int>();
ages["Alice"] = 30;
ages["Bob"] = 35;
ages["Charlie"] = 25;
Console.WriteLine($"Alice's age: {ages["Alice"]}");
Console.WriteLine($"Alice's age: {ages["Alice"]}");
foreach (var pair in ages)
{
Console.WriteLine($"Name: {pair.Key}, Age: {pair.Value}");
}
foreach (var pair in ages)
{
Console.WriteLine($"Name: {pair.Key}, Age: {pair.Value}");
}
if (ages.TryGetValue("David", out int age))
{
Console.WriteLine($"David's age: {age}");
}
else
{
Console.WriteLine("David's age is not available.");
}
if (ages.TryGetValue("David", out int age))
{
Console.WriteLine($"David's age: {age}");
}
else
{
Console.WriteLine("David's age is not available.");
}
ages.Remove("Charlie");
ages.Remove("Charlie");
var colors = new Dictionary<string, string>
{
{ "red", "#FF0000" },
{ "green", "#00FF00" },
{ "blue", "#0000FF" }
};
var colors = new Dictionary<string, string>
{
{ "red", "#FF0000" },
{ "green", "#00FF00" },
{ "blue", "#0000FF" }
};
虽然 "Dictionary<TKey, TValue>"是一个功能强大的工具,但其他方法和考虑因素取决于您应用程序的具体要求:
如果您的应用程序需要从多个线程对字典进行线程安全访问,请考虑使用
ConcurrentDictionary<TKey,TValue>`。对于需要不可变性的场景,
System.Collections.Immutable命名空间中的
ImmutableDictionary<TKey,TValue>`提供了不可变的键值集合。IronPDF 由 Iron Software Products 提供是一个生成 PDF 文档的优秀库。 其易用性和效率首屈一指。
IronPDF 在以下方面表现出色HTML 转 PDF转换,确保精确保留原始布局和样式。 它非常适合从基于网络的内容(如报告、发票和文档)创建PDF。 IronPDF 支持 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");
}
}
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");
}
}
IronPdf 可通过 NuGet 软件包管理器安装:
Install-Package IronPdf
或者从 Visual Studio 这样翻译:
要生成带有元组示例的文档,我们可以使用以下代码:
namespace IronPatterns;
class Program
{
static void Main()
{
Console.WriteLine("-----------Iron Software-------------");
var renderer = new ChromePdfRenderer(); // var pattern
var content = " <h1> Iron Software is Awesome </h1> Made with IronPDF!";
content += "<h2>Demo C# Pair with Tuples</h2>";
var result = Divide(10, 3);
Console.WriteLine($"Quotient: {result.Item1}, Remainder: {result.Item2}");
content += $"<p>When we divide 10, 3 </p>";
content += $"<p>Quotient: {result.Item1}, Remainder: {result.Item2}</p>";
var pdf = renderer.RenderHtmlAsPdf(content);
pdf.SaveAs("output.pdf"); // Saves PDF
}
public static (int, int) Divide(int dividend, int divisor)
{
// var count;
int quotient = dividend / divisor;
int remainder = dividend % divisor;
return (quotient, remainder);
}
}
namespace IronPatterns;
class Program
{
static void Main()
{
Console.WriteLine("-----------Iron Software-------------");
var renderer = new ChromePdfRenderer(); // var pattern
var content = " <h1> Iron Software is Awesome </h1> Made with IronPDF!";
content += "<h2>Demo C# Pair with Tuples</h2>";
var result = Divide(10, 3);
Console.WriteLine($"Quotient: {result.Item1}, Remainder: {result.Item2}");
content += $"<p>When we divide 10, 3 </p>";
content += $"<p>Quotient: {result.Item1}, Remainder: {result.Item2}</p>";
var pdf = renderer.RenderHtmlAsPdf(content);
pdf.SaveAs("output.pdf"); // Saves PDF
}
public static (int, int) Divide(int dividend, int divisor)
{
// var count;
int quotient = dividend / divisor;
int remainder = dividend % divisor;
return (quotient, remainder);
}
}
获取您的IronPDF 试用许可证并将许可证放入 appsettings.json
。
"IronPDF.LicenseKey": "<Your Key>"
"IronPDF.LicenseKey": "<Your Key>"
在本文中,我们探讨了成对的概念以及在 C# 中拥有一个 Pair
类的重要性。 我们提供了 "Pair "自定义类的简单实现以及各种用例,展示其在日常编程任务中的多功能性和实用性。
无论您是要处理坐标、从方法中返回多个值,还是要存储键值关联,Pair 类都是您编程技能的宝贵补充。
除此以外IronPDF 库功能对于开发人员来说,在应用程序中根据需要即时生成 PDF 文档是一项非常重要的组合技能。