Trabajar con colecciones genéricas en C# ofrece flexibilidad, tipado fuerte y un flujo de trabajo moderno. Aquí verás cómo migrar de arreglos a List<T>, agregar y quitar elementos con métodos clave, y depurar en Visual Studio Code con confianza. Todo con ejemplos claros y directos.
¿Por qué usar colecciones genéricas en C#?
Las colecciones genéricas permiten definir el tipo de dato que almacenan desde el inicio. Eso evita errores y mejora el rendimiento. Con List<T> puedes agregar, quitar y combinar elementos, algo que con un arreglo fijo no es posible.
Arreglo vs lista: un arreglo tiene tamaño fijo. Una lista crece y reduce dinámicamente.
Genéricos:List<Curso> asegura que solo se guarden objetos Curso.
Espacio de nombres: se requiere using System.Collections.Generic; para acceder a List, Dictionary, HashSet, etc.
Otros tipos útiles: cola (Queue), pila (Stack), Dictionary y HashSet. También hay colecciones especializadas en System.Collections.Specialized y para concurrencia en System.Collections.Concurrent.
Compatibilidad con foreach: recorrer una lista o un arreglo con foreach es equivalente.
IEnumerable clave: una lista es un IEnumerable<Curso>. Casi cualquier colección es enumerable, lo que habilita métodos como agregar rangos.
¿Cómo migrar de arreglos a list en System.Collections.Generic?
Migrar es directo: declaras una List<Curso>, cambias la propiedad de Escuela a lista genérica y reasignas la referencia.
Inicializar una lista tipada.
usingSystem.Collections.Generic;var listaCursos =newList<Curso>{newCurso{ Nombre ="101"},newCurso{ Nombre ="201"},newCurso{ Nombre ="301"}};
foreach(var curso in escuela.Cursos){// Imprimir o procesar cada curso.}
¿Cómo inicializar y asignar a escuela.cursos?
Declara List<Curso> y especifica el tipo Curso entre < >.
Importa el namespaceSystem.Collections.Generic.
Asigna la nueva lista a escuela.Cursos.
Mantén el recorrido con foreach sin cambios.
¿Cómo agregar elementos: add y addrange?
Puedes sumar cursos de forma incremental o en bloque.
Agregar uno a uno con Add.
escuela.Cursos.Add(newCurso{ Nombre ="102", Jornada = TiposJornada.Tarde
});escuela.Cursos.Add(newCurso{ Nombre ="202", Jornada = TiposJornada.Tarde
});
Agregar en bloque con AddRange usando otra colección enumerable.
var otraColeccion =newList<Curso>{newCurso{ Nombre ="401", Jornada = TiposJornada.Mañana },newCurso{ Nombre ="501", Jornada = TiposJornada.Mañana },newCurso{ Nombre ="502", Jornada = TiposJornada.Tarde }};escuela.Cursos.AddRange(otraColeccion);
Notas prácticas.
El unique ID del curso es de solo lectura: se asigna internamente.
Puedes estandarizar reglas simples, por ejemplo: nombres que terminan en "2" con jornada tarde.
¿Cómo eliminar elementos: clear y remove?
La lista también permite limpiar o quitar elementos específicos.
Vaciar una colección completa con Clear.
otraColeccion.Clear();// Remueve todos los elementos.
Quitar un curso concreto con Remove.
// Suponiendo que tienes la referencia al objeto curso a eliminar.escuela.Cursos.Remove(cursoAEliminar);
Remover según condición: existe una opción para "remover todos los que cumplan una condición" sobre la colección de cursos.
¿Cómo depurar y observar colecciones en Visual Studio Code?
Depurar ayuda a verificar contenidos en cada paso. El flujo en VS Code es cómodo y visual.
Ejecuta en consola con dotnet run para validar rápidamente.
Coloca un punto de interrupción y presiona play en el panel de debug.
Observa variables locales en el panel superior.
Usa la ventana watch para inspeccionar otraColeccion y sus elementos.
Avanza paso a paso: pausa, siguiente, adentro, afuera, reiniciar o detener.
Verifica cambios tras Clear: el contador pasa de tres a cero, sin errores.
¿Listo para profundizar en las condiciones de remoción selectiva y más operaciones sobre colecciones? Comparte tus dudas o casos de uso en los comentarios.
Uso de Colecciones en C#: Listas y Operaciones Básicas