Pruebe en producción sin marcas de agua.
Funciona donde lo necesite.
Obtén 30 días de producto totalmente funcional.
Ténlo en funcionamiento en minutos.
Acceso completo a nuestro equipo de asistencia técnica durante la prueba del producto
Un par es una estructura de datos simple que contiene dos valores relacionados. Es una forma cómoda de agrupar dos datos distintos. Los pares se suelen utilizar cuando un método debe devolver dos valores o cuando se trabaja con asociaciones clave-valor.
En C#, los desarrolladores recurren a menudo al uso de tuplas(Tupla<T1, T2>) para los valores de emparejamiento. Sin embargo, las tuplas son inmutables, y se accede a sus elementos a través de propiedades como Item1 y Item2, lo que puede dar lugar a un código menos legible cuando se utiliza ampliamente. Aquí es donde resulta útil una clase Pair personalizada.
Si necesita una estructura que contenga dos objetos relacionados y la ocultación de datos no es una prioridad, puede utilizar la clase Pair en su código. La clase Par no encapsula sus referencias a objetos. En su lugar, los expone directamente a todos los códigos de llamada como campos públicos de clase.
Esta elección de diseño permite un acceso directo a los objetos contenidos sin la sobrecarga de la encapsulación. Además, al final del artículo, exploraremos cómoIronPDF para la generación de PDF deVisión general de Iron Software puede utilizarse para generar un documento PDF.
C# 7.0 ha introducido mejoras en la sintaxis de las tuplas, lo que facilita aún más el trabajo con ellas. A continuación se explica cómo declarar e inicializar tuplas:
// 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}");
Las tuplas permiten expresar estructuras de datos complejas utilizando una sintaxis concisa sin necesidad de definir clases o structs personalizados.
Las tuplas son estructuras de datos ligeras, lo que las hace adecuadas para situaciones en las que se necesita un almacenamiento temporal o intermedio de los datos.
Con la sintaxis de tupla, puedes nombrar implícitamente los elementos de la tupla, lo que mejora la legibilidad del código y reduce la necesidad de comentarios.
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);
Aunque las tuplas de C# 7.0 ofrecen importantes ventajas, hay que tener en cuenta algunas limitaciones y consideraciones:
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;
}
}
Aquí los tipos se definen en el momento del uso y las dos propiedades se exponen como propiedades públicas.
Ahora, exploremos algunos casos de uso común en el siguiente ejemplo donde la clase Pair puede ser beneficiosa:
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}");
Los pares clave-valor ofrecen una forma sencilla y eficaz de asociar datos. En C#, la principal herramienta para trabajar con pares clave-valor es la clase Dictionary<TKey, TValue>
, un tipo de colección versátil y potente.
Un par clave-valor es una estructura de datos que asocia una clave única a un valor. Esta asociación permite recuperar y manipular eficazmente los datos a partir de su identificador único. En C#, los pares clave-valor se utilizan habitualmente para tareas como el almacenamiento en caché, la gestión de la configuración y el almacenamiento de datos.
Dictionary<TKey, TValue>
en C#La clase Dictionary<TKey, TValue>
en C# es una colección genérica que almacena pares clave-valor. Proporciona búsquedas rápidas basadas en las claves y se utiliza ampliamente para gestionar datos asociativos.
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" }
};
Aunque Dictionary<TKey, TValue>
es una herramienta potente, los enfoques y consideraciones alternativos dependen de los requisitos específicos de su aplicación:
ConcurrentDictionary<TKey, TValue>:
Si su aplicación requiere un acceso seguro al diccionario desde varios subprocesos, considere el uso de ConcurrentDictionary<TKey, TValue>
.ImmutableDictionary<TKey, TValue>:
Para escenarios en los que se desea inmutabilidad, ImmutableDictionary<TKey, TValue>
del espacio de nombres System.Collections.Immutable
proporciona colecciones clave-valor inmutables.IronPDF de Iron Software Products es una excelente biblioteca para generar documentos PDF. Su facilidad de uso y eficacia son insuperables.
IronPDF destaca enHTML a PDFconversión, asegurando la preservación precisa de los diseños y estilos originales. Es perfecto para crear PDFs a partir de contenido basado en la web, como informes, facturas y documentación. Con soporte para archivos HTML, URLs y cadenas de HTML en bruto, IronPDF produce fácilmente documentos PDF de alta calidad.
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 puede instalarse desde el gestor de paquetes NuGet:
Install-Package IronPdf
O desde Visual Studio así:
Para generar un documento con un ejemplo de tupla podemos utilizar el siguiente código:
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);
}
}
Consigue tuLicencia de prueba de IronPDF y colocar la licencia en el archivo appsettings.json
.
"IronPDF.LicenseKey": "<Your Key>"
"IronPDF.LicenseKey": "<Your Key>"
En este artículo, hemos explorado el concepto de pares y la importancia de tener una clase Pair
en C#. Hemos proporcionado una implementación sencilla de la clase personalizada Pair
junto con varios casos de uso que demuestran su versatilidad y utilidad en las tareas cotidianas de programación.
Tanto si está trabajando con coordenadas, devolviendo múltiples valores de un método, o almacenando asociaciones clave-valor, la clase Pair puede ser una valiosa adición a su conjunto de habilidades de programación.
Además, elFuncionalidad de la biblioteca IronPDF es una gran combinación de habilidades que los desarrolladores deben tener para generar documentos PDF sobre la marcha según se requiera en las aplicaciones.