Cargando...

Colecciones

Las colecciones en C# son estructuras de datos fundamentales que permiten almacenar, organizar y manipular grupos de objetos de manera eficiente y flexible. A diferencia de los arrays tradicionales, las colecciones son dinámicas, ofrecen métodos integrados para agregar, eliminar, buscar y recorrer elementos, y permiten aplicar conceptos avanzados de programación orientada a objetos (POO), como encapsulación, herencia y polimorfismo.
En el desarrollo moderno de C#, las colecciones son esenciales para manejar datos en aplicaciones empresariales, sistemas de gestión, procesamiento de datos y desarrollo web. Entre las colecciones más utilizadas se encuentran List, Dictionary, HashSet, Queue y Stack. List se utiliza para almacenar elementos ordenados, Dictionary permite asociar claves con valores para un acceso rápido, HashSet asegura elementos únicos, Queue sigue el principio FIFO (primero en entrar, primero en salir), y Stack sigue LIFO (último en entrar, primero en salir).
Este tutorial enseñará a manipular colecciones mediante operaciones como agregar, eliminar, buscar y recorrer elementos, así como manejar excepciones, optimizar rendimiento y aplicar buenas prácticas de diseño. Al finalizar, el lector será capaz de elegir la colección más adecuada para diferentes escenarios, implementar soluciones eficientes y mantener la integridad y escalabilidad de las aplicaciones C#.

Ejemplo Básico

text
TEXT Code
using System;
using System.Collections.Generic;

namespace ColeccionesExample
{
class Program
{
static void Main(string\[] args)
{
// Crear una lista dinámica de enteros
List<int> numeros = new List<int>();

// Agregar elementos
numeros.Add(10);
numeros.Add(20);
numeros.Add(30);

// Mostrar elementos
Console.WriteLine("Lista de números:");
foreach (int num in numeros)
{
Console.WriteLine(num);
}

// Comprobar si existe un elemento
if (numeros.Contains(20))
{
Console.WriteLine("El número 20 está en la lista.");
}

// Eliminar un elemento
numeros.Remove(10);
Console.WriteLine("Después de eliminar 10:");
numeros.ForEach(n => Console.WriteLine(n));
}
}

}

En este ejemplo se utiliza List para crear una lista dinámica de enteros. Los métodos Add(), Remove() y Contains() muestran cómo agregar, eliminar y verificar elementos. El bucle foreach permite recorrer la lista de forma segura y eficiente, mientras que el método ForEach con expresión lambda ofrece una alternativa más concisa para imprimir elementos.
El uso de genéricos garantiza seguridad de tipos, evitando errores de conversión y excepciones en tiempo de ejecución. La lista es adecuada para almacenar datos secuenciales, como IDs, puntuaciones o registros, y sirve como base para comprender colecciones más avanzadas, que se aplican en proyectos de mayor complejidad y rendimiento.

Ejemplo Práctico

text
TEXT Code
using System;
using System.Collections.Generic;

namespace ColeccionesAvanzadas
{
class Producto
{
public int Id { get; set; }
public string Nombre { get; set; }
public double Precio { get; set; }
}

class Program
{
static void Main(string[] args)
{
// Crear un diccionario de productos
Dictionary<int, Producto> productos = new Dictionary<int, Producto>();

// Agregar productos
productos.Add(1, new Producto { Id = 1, Nombre = "Laptop", Precio = 4500 });
productos.Add(2, new Producto { Id = 2, Nombre = "Mouse", Precio = 150 });
productos.Add(3, new Producto { Id = 3, Nombre = "Teclado", Precio = 300 });

// Mostrar productos con precio mayor a 200
Console.WriteLine("Productos con precio mayor a 200:");
foreach (var producto in productos.Values)
{
if (producto.Precio > 200)
Console.WriteLine($"{producto.Nombre} - Precio: {producto.Precio}");
}

// Manejar error al agregar clave duplicada
try
{
productos.Add(2, new Producto { Id = 2, Nombre = "Monitor", Precio = 1200 });
}
catch (ArgumentException ex)
{
Console.WriteLine("Error: clave duplicada. " + ex.Message);
}
}
}

}

En este ejemplo se utiliza Dictionary\ para demostrar el uso de colecciones con objetos, permitiendo un acceso rápido a los elementos mediante claves únicas. El recorrido por productos.Values mantiene la encapsulación y el bloque try-catch protege contra errores al agregar claves duplicadas.
Este enfoque muestra cómo la elección de la colección adecuada impacta en el rendimiento y la integridad de los datos, siendo crucial en aplicaciones como inventarios, catálogos y sistemas de análisis. La combinación de colecciones genéricas y POO facilita la mantenibilidad, escalabilidad e integración con otros componentes de software.

Las mejores prácticas incluyen elegir la colección más adecuada según el escenario, utilizar foreach o LINQ para recorrer elementos, manejar correctamente las excepciones y minimizar copias innecesarias de datos. Errores comunes son usar List para búsquedas frecuentes, ignorar claves duplicadas en Dictionary y generar consumo innecesario de memoria. Las herramientas de depuración ayudan a detectar problemas y la optimización consiste en seleccionar la colección correcta y reducir operaciones costosas. La seguridad se garantiza mediante validación de datos y manteniendo la integridad de la colección.

📊 Tabla de Referencia

C# Element/Concept Description Usage Example
List<T> Almacena elementos ordenados dinámicamente List<int> numeros = new List<int>();
Dictionary\<TKey, TValue> Asocia claves con valores para acceso rápido Dictionary\<int, string> dict = new Dictionary\<int, string>();
HashSet<T> Almacena elementos únicos HashSet<string> nombresUnicos = new HashSet<string>();
Queue<T> Estructura FIFO (primero en entrar, primero en salir) Queue<int> cola = new Queue<int>();
Stack<T> Estructura LIFO (último en entrar, primero en salir) Stack<int> pila = new Stack<int>();

El aprendizaje de colecciones en C# desarrolla comprensión de estructuras de datos, algoritmos y principios de POO, permitiendo construir aplicaciones robustas y escalables. Los siguientes pasos recomendados incluyen estudiar LINQ, colecciones thread-safe y patrones de diseño. En proyectos reales, las colecciones se utilizan para inventarios, caché, procesamiento de datos y gestión de grandes volúmenes de información. La documentación oficial y comunidades de desarrolladores proporcionan recursos continuos para profundizar en estos conocimientos.

🧠 Pon a Prueba tu Conocimiento

Listo para Empezar

Prueba tu Conocimiento

Pon a prueba tu comprensión de este tema con preguntas prácticas.

4
Preguntas
🎯
70%
Para Aprobar
♾️
Tiempo
🔄
Intentos

📝 Instrucciones

  • Lee cada pregunta cuidadosamente
  • Selecciona la mejor respuesta para cada pregunta
  • Puedes repetir el quiz tantas veces como quieras
  • Tu progreso se mostrará en la parte superior