Saltar al pie de página
.NET AYUDA

Colección C# (Cómo Funciona para Desarrolladores)

C# se ha convertido en una opción popular y adaptable para los desarrolladores entre los muchos lenguajes de programación disponibles. El concepto de colecciones está en el núcleo de la extensa biblioteca y marcos de C#, que son una de las principales ventajas del lenguaje. En C#, una colección es esencial para almacenar y organizar datos de manera efectiva. Ofrecen a los desarrolladores una amplia gama de herramientas efectivas para resolver problemas de programación desafiantes. Profundizaremos en las colecciones en esta publicación, cubriendo sus características, tipos y estrategias óptimas de uso.

Cómo usar las colecciones de C

  1. Cree un nuevo proyecto de aplicación de consola.
  2. Cree un objeto para la colección en C#.
  3. Agregue los valores a la clase de colección, que puede almacenar múltiples conjuntos de objetos.
  4. Procese las operaciones de valor como agregar, eliminar, ordenar, etc.
  5. Muestre el resultado y elimine el objeto.

C#: Comprender las colecciones

Las colecciones en C# son contenedores que permiten a los programadores trabajar y almacenar conjuntos de clases de objetos. Estos objetos son flexibles y adaptables a muchos entornos de programación, y podrían ser del mismo tipo o de tipos distintos. La mayoría de las clases de colección implementan componentes del espacio de nombres System en C#, lo que significa que se deben importar espacios de nombres como System.Collections y System.Collections.Generic, que ofrecen varias clases de colección que son tanto genéricas como no genéricas. Las colecciones también permiten la asignación dinámica de memoria, la adición, búsqueda y clasificación de elementos dentro de las clases de colección.

Tipos de colección no genéricos

ArrayList, Hashtable y Queue son algunas de las clases de colección no genéricas disponibles en C# que se incluyeron en las primeras versiones del lenguaje. Estas colecciones ofrecen una alternativa a la definición explícita de los tipos de cosas que desea conservar y trabajar. Sin embargo, los desarrolladores a menudo eligen colecciones genéricas debido a su rendimiento superior y seguridad de tipo.

Colecciones genéricas

Las iteraciones posteriores de C# incluyeron colecciones genéricas para superar las desventajas de las colecciones no genéricas. Proporcionan seguridad de tipo durante la compilación y permiten a los desarrolladores manejar datos de tipo estrecho. Algunas de las clases de colección genérica usadas con frecuencia incluyen List, Dictionary<TKey, TValue>, Queue y Stack. Estas colecciones son la opción predilecta en el desarrollo moderno de C# porque proporcionan un mejor rendimiento y verificación de tipo en tiempo de compilación.

Tipos de colecciones clave de C

1. List

Un array dinámico que facilita la inserción y eliminación rápida y sencilla de elementos es la clase List. Es una opción flexible para situaciones que requieren una colección redimensionable, ya que ofrece formas de filtrar, buscar y manipular componentes.

// Creating a list with integers and adding/removing elements
List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
numbers.Add(6); // Adds element '6' to the end
numbers.Remove(3); // Removes the first occurrence of the element '3'
// Creating a list with integers and adding/removing elements
List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
numbers.Add(6); // Adds element '6' to the end
numbers.Remove(3); // Removes the first occurrence of the element '3'
' Creating a list with integers and adding/removing elements
Dim numbers As New List(Of Integer) From {1, 2, 3, 4, 5}
numbers.Add(6) ' Adds element '6' to the end
numbers.Remove(3) ' Removes the first occurrence of the element '3'
$vbLabelText   $csharpLabel

2. Diccionario<TKey, TValue>

Con rápidas velocidades de búsqueda, una colección de pares clave-valor está representada por la clase Dictionary<TKey, TValue>. Se emplea con frecuencia en situaciones donde tener acceso rápido a los datos a través de un valor clave único es crucial. Esta clave se utiliza para acceder a los elementos dentro del diccionario.

// Creating a dictionary mapping names to ages
Dictionary<string, int> ageMap = new Dictionary<string, int>();
ageMap.Add("John", 25); // The string "John" is the key that can access the value 25
ageMap["Jane"] = 30; // Setting the key "Jane" to hold the value 30
// Creating a dictionary mapping names to ages
Dictionary<string, int> ageMap = new Dictionary<string, int>();
ageMap.Add("John", 25); // The string "John" is the key that can access the value 25
ageMap["Jane"] = 30; // Setting the key "Jane" to hold the value 30
' Creating a dictionary mapping names to ages
Dim ageMap As New Dictionary(Of String, Integer)()
ageMap.Add("John", 25) ' The string "John" is the key that can access the value 25
ageMap("Jane") = 30 ' Setting the key "Jane" to hold the value 30
$vbLabelText   $csharpLabel

3. Cola y Pila

La colección de primero en entrar, primero en salir (FIFO) y la de último en entrar, primero en salir (LIFO) son implementadas, respectivamente, por las clases genéricas Queue y Stack. Pueden usarse para gestionar elementos en un cierto orden con base en las necesidades de la aplicación.

// Creating and manipulating a queue
Queue<string> tasks = new Queue<string>(); 
tasks.Enqueue("Task 1"); // Adding to the queue
tasks.Enqueue("Task 2");

// Creating and manipulating a stack
Stack<double> numbers = new Stack<double>();
numbers.Push(3.14); // Adding to the stack
numbers.Push(2.71);
// Creating and manipulating a queue
Queue<string> tasks = new Queue<string>(); 
tasks.Enqueue("Task 1"); // Adding to the queue
tasks.Enqueue("Task 2");

// Creating and manipulating a stack
Stack<double> numbers = new Stack<double>();
numbers.Push(3.14); // Adding to the stack
numbers.Push(2.71);
' Creating and manipulating a queue
Dim tasks As New Queue(Of String)()
tasks.Enqueue("Task 1") ' Adding to the queue
tasks.Enqueue("Task 2")

' Creating and manipulating a stack
Dim numbers As New Stack(Of Double)()
numbers.Push(3.14) ' Adding to the stack
numbers.Push(2.71)
$vbLabelText   $csharpLabel

4. HashSet

Los elementos únicos dispuestos en una colección desordenada son representados por la clase HashSet. Ofrece formas efectivas de realizar operaciones de conjunto como diferencia, unión e intersección.

// Creating hashsets and performing a union operation
HashSet<int> setA = new HashSet<int> { 1, 2, 3, 4 };
HashSet<int> setB = new HashSet<int> { 3, 4, 5, 6 };
HashSet<int> unionSet = new HashSet<int>(setA);
unionSet.UnionWith(setB); // Combining setA and setB
// Creating hashsets and performing a union operation
HashSet<int> setA = new HashSet<int> { 1, 2, 3, 4 };
HashSet<int> setB = new HashSet<int> { 3, 4, 5, 6 };
HashSet<int> unionSet = new HashSet<int>(setA);
unionSet.UnionWith(setB); // Combining setA and setB
' Creating hashsets and performing a union operation
Dim setA As New HashSet(Of Integer) From {1, 2, 3, 4}
Dim setB As New HashSet(Of Integer) From {3, 4, 5, 6}
Dim unionSet As New HashSet(Of Integer)(setA)
unionSet.UnionWith(setB) ' Combining setA and setB
$vbLabelText   $csharpLabel

HierroPDF

Colección en C# (Cómo Funciona para Desarrolladores): Figura 1 - Página web de IronPDF

Una biblioteca C# llamada IronPDF facilita la creación, edición y visualización de documentos PDF en aplicaciones .NET. Ofrece muchas opciones de licencia, compatibilidad multiplataforma, renderizado de alta calidad y conversión de HTML a PDF. La API fácil de usar de IronPDF facilita el manejo de PDFs, convirtiéndola en una herramienta valiosa para los desarrolladores de C#.

La característica destacada de IronPDF es su capacidad de conversión de HTML a PDF, que mantiene todos los diseños y estilos. Genera PDFs a partir de contenido web, lo que lo hace perfecto para informes, facturas y documentación. Archivos HTML, URL y cadenas HTML se pueden convertir en PDFs sin esfuerzo.

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

Las características clave de IronPDF incluyen:

  • Convertir HTML a PDF: Con IronPDF, los programadores pueden crear documentos PDF a partir de texto HTML, incluyendo CSS y JavaScript. Esto es especialmente útil para aquellos que ya están familiarizados con las herramientas de desarrollo web y desean usar HTML y CSS para crear PDFs.
  • Generación y Manipulación de PDFs: La biblioteca proporciona la capacidad de crear documentos PDF desde cero programáticamente. Además, facilita la edición de PDFs preexistentes, lo que permite operaciones como extracción de texto, adición de marca de agua, división de PDFs y más.
  • Renderizado superior: IronPDF utiliza un motor de renderizado para generar una salida PDF de la más alta calidad, asegurando que los documentos finales conserven claridad e integridad visual.
  • Compatibilidad multiplataforma: IronPDF está diseñado para funcionar tanto con .NET Core como con el .NET Framework, permitiéndole ser utilizado en diversas aplicaciones y en una variedad de plataformas.
  • Optimización de rendimiento: Incluso cuando se trabaja con documentos PDF grandes o complicados, la biblioteca está diseñada para proporcionar producción y renderizado de PDF eficientes.

Para saber más sobre la documentación de IronPDF, consulte la Documentación de IronPDF.

Instalación de IronPDF

Instale primero la biblioteca IronPDF usando el Package Manager Console o el NuGet Package Manager con:

Install-Package IronPdf

Colección en C# (Cómo Funciona para Desarrolladores): Figura 2 - Instalación de IronPDF con el Package Manager Console

Utilizar el NuGet Package Manager para buscar el paquete "IronPDF" es una opción adicional. Podemos elegir y descargar el paquete necesario de esta lista de todos los paquetes NuGet asociados con IronPDF.

Colección en C# (Cómo Funciona para Desarrolladores): Figura 3 - Instalación de IronPDF con el NuGet Package Manager

Creación de documentos con colecciones mediante IronPDF

Comprender el papel que desempeñan las colecciones en la estructura y organización de datos es crucial antes de sumergirnos en la interfaz con IronPDF. Los desarrolladores pueden almacenar, recuperar y modificar agrupaciones de objetos de manera organizada usando colecciones. Con tantos tipos diferentes disponibles, como List, Dictionary<TKey, TValue> y HashSet, los desarrolladores pueden seleccionar la colección que mejor se adapte a sus requisitos.

Imagina que tienes que crear un informe con una lista de transacciones de ventas. Los datos pueden organizarse de manera efectiva usando una List, que sirve como base para el procesamiento y visualización adicionales.

// Define the Transaction class
public class Transaction
{
    public string ProductName { get; set; }
    public decimal Amount { get; set; }
    public DateTime Date { get; set; }
}

// Create a list of transactions
List<Transaction> transactions = new List<Transaction>
{
    new Transaction { ProductName = "Product A", Amount = 100.50m, Date = DateTime.Now.AddDays(-2) },
    new Transaction { ProductName = "Product B", Amount = 75.20m, Date = DateTime.Now.AddDays(-1) },
    // Add more transactions as needed
};
// Define the Transaction class
public class Transaction
{
    public string ProductName { get; set; }
    public decimal Amount { get; set; }
    public DateTime Date { get; set; }
}

// Create a list of transactions
List<Transaction> transactions = new List<Transaction>
{
    new Transaction { ProductName = "Product A", Amount = 100.50m, Date = DateTime.Now.AddDays(-2) },
    new Transaction { ProductName = "Product B", Amount = 75.20m, Date = DateTime.Now.AddDays(-1) },
    // Add more transactions as needed
};
' Define the Transaction class
Public Class Transaction
	Public Property ProductName() As String
	Public Property Amount() As Decimal
	Public Property [Date]() As DateTime
End Class

' Create a list of transactions
Private transactions As New List(Of Transaction) From {
	New Transaction With {
		.ProductName = "Product A",
		.Amount = 100.50D,
		.Date = DateTime.Now.AddDays(-2)
	},
	New Transaction With {
		.ProductName = "Product B",
		.Amount = 75.20D,
		.Date = DateTime.Now.AddDays(-1)
	}
}
$vbLabelText   $csharpLabel

En el PDF, crearemos una tabla sencilla que enumere el nombre del producto, el monto de la transacción y la fecha para cada uno.

using IronPdf;

// Create a PDF document renderer
var pdfDocument = new HtmlToPdf();

// HTML content with a table populated by data from the 'transactions' list
string htmlContent = "<table><tr><th>Product Name</th><th>Amount</th><th>Date</th></tr>";
foreach (var transaction in transactions)
{
    htmlContent += $"<tr><td>{transaction.ProductName}</td><td>{transaction.Amount}</td><td>{transaction.Date.ToShortDateString()}</td></tr>";
}
htmlContent += "</table>";

// Convert HTML to PDF
PdfDocument pdf = pdfDocument.RenderHtmlAsPdf(htmlContent);

// Specify the file path to save the PDF
string pdfFilePath = "transactions_report.pdf";
pdf.SaveAs(pdfFilePath);
using IronPdf;

// Create a PDF document renderer
var pdfDocument = new HtmlToPdf();

// HTML content with a table populated by data from the 'transactions' list
string htmlContent = "<table><tr><th>Product Name</th><th>Amount</th><th>Date</th></tr>";
foreach (var transaction in transactions)
{
    htmlContent += $"<tr><td>{transaction.ProductName}</td><td>{transaction.Amount}</td><td>{transaction.Date.ToShortDateString()}</td></tr>";
}
htmlContent += "</table>";

// Convert HTML to PDF
PdfDocument pdf = pdfDocument.RenderHtmlAsPdf(htmlContent);

// Specify the file path to save the PDF
string pdfFilePath = "transactions_report.pdf";
pdf.SaveAs(pdfFilePath);
Imports IronPdf

' Create a PDF document renderer
Private pdfDocument = New HtmlToPdf()

' HTML content with a table populated by data from the 'transactions' list
Private htmlContent As String = "<table><tr><th>Product Name</th><th>Amount</th><th>Date</th></tr>"
For Each transaction In transactions
	htmlContent &= $"<tr><td>{transaction.ProductName}</td><td>{transaction.Amount}</td><td>{transaction.Date.ToShortDateString()}</td></tr>"
Next transaction
htmlContent &= "</table>"

' Convert HTML to PDF
Dim pdf As PdfDocument = pdfDocument.RenderHtmlAsPdf(htmlContent)

' Specify the file path to save the PDF
Dim pdfFilePath As String = "transactions_report.pdf"
pdf.SaveAs(pdfFilePath)
$vbLabelText   $csharpLabel

Los desarrolladores tienen la opción de guardar el documento PDF en el disco o mostrarlo a los usuarios una vez producido. IronPDF ofrece varias opciones de salida, incluyendo la transmisión en el navegador, guardado de archivos e integración en almacenamiento en la nube.

Colección en C# (Cómo Funciona para Desarrolladores): Figura 4 - PDF generado a partir del código anterior

La pantalla anterior muestra la salida generada por el código anterior. Para aprender más sobre el código, consulte Ejemplo de uso de HTML para crear un PDF.

Conclusión

Una gran cantidad de oportunidades para la producción dinámica de documentos son posibles gracias a la combinación de colecciones con IronPDF. Los desarrolladores pueden gestionar y organizar datos de manera efectiva al utilizar colecciones, y IronPDF facilita la creación de documentos PDF visualmente hermosos. El poder combinado de IronPDF y las colecciones ofrece una solución confiable y adaptable para la producción de contenido dinámico en aplicaciones C#, independientemente del tipo de documento que esté produciendo—facturas, informes o cualquier otra cosa.

La edición $799 Lite de IronPDF incluye un año de soporte de software, opciones de actualización y una licencia permanente. Los usuarios también tienen la oportunidad de evaluar el producto en condiciones reales durante el período de prueba con marca de agua. Para obtener más información sobre el costo, las licencias y la prueba gratuita de IronPDF, visite la Información de Licencias de IronPDF. Para obtener más información sobre Iron Software, visite la sitio web de Iron Software.

Preguntas Frecuentes

¿Qué son las colecciones en C# y por qué son importantes?

Las colecciones en C# son esenciales para el almacenamiento y organización de datos, proporcionando a los desarrolladores herramientas para manejar eficientemente desafíos de programación complejos. Permiten la asignación dinámica de memoria y una fácil manipulación de conjuntos de datos.

¿Cuáles son las diferencias entre las colecciones no genéricas y genéricas en C#?

Las colecciones no genéricas, como ArrayList y Hashtable, son menos seguras en tipos y pueden almacenar cualquier tipo de objeto. Las colecciones genéricas, como List y Dictionary, proporcionan seguridad de tipos y un rendimiento mejorado al asegurar la consistencia del tipo de datos.

¿Cómo se crea una lista genérica en C#?

Una lista genérica en C# se puede crear usando la clase List. Por ejemplo, una lista de enteros se puede crear con Listnumbers = new List{ 1, 2, 3 };.

¿Cómo puedo convertir HTML a PDF en C#?

Puede usar el método RenderHtmlAsPdf de IronPDF para convertir cadenas HTML en documentos PDF. También admite la conversión de archivos HTML y URL en documentos PDF, manteniendo la integridad del diseño y el estilo.

¿Cuáles son algunas mejores prácticas para usar colecciones en C#?

Las mejores prácticas para usar colecciones en C# incluyen elegir el tipo de colección adecuado para sus necesidades, como usar Dictionary para pares clave-valor y List para listas ordenadas, y asegurar una gestión adecuada de la memoria al desechar las colecciones cuando ya no se necesitan.

¿Cómo pueden las colecciones mejorar la creación de PDFs en aplicaciones C#?

Las colecciones pueden organizar eficientemente los datos para la creación de documentos. Por ejemplo, usar una List para compilar datos de ventas puede facilitar la generación de reportes PDF completos usando IronPDF, simplificando la gestión y presentación de datos.

¿Qué opciones de licencia están disponibles para IronPDF?

IronPDF ofrece una licencia Lite con un año de soporte y actualizaciones, y una versión de prueba con marca de agua para evaluación. Estas opciones permiten a los desarrolladores probar e implementar las capacidades de IronPDF en sus proyectos.

¿Cómo puedo instalar IronPDF en un proyecto .NET?

Puede instalar IronPDF en un proyecto .NET usando el Administrador de Paquetes NuGet con el comando Install-Package IronPdf. Alternativamente, puede buscar 'IronPDF' en el Administrador de Paquetes NuGet para añadirlo a su proyecto.

Jacob Mellor, Director de Tecnología @ Team Iron
Director de Tecnología

Jacob Mellor es Director de Tecnología en Iron Software y un ingeniero visionario que lidera la tecnología PDF en C#. Como el desarrollador original detrás de la base de código central de Iron Software, ha moldeado la arquitectura de productos de la compañía desde ...

Leer más