Aprende a escribir código más claro y compacto en C# al trabajar con colecciones: de predicados tradicionales a delegados y expresiones lambda, con ejemplos prácticos de borrado con RemoveAll y buenas prácticas de comentarios en Visual Studio Code. Confianza y eficiencia en un solo lugar.
¿Cómo simplificar el borrado en colecciones con predicados y RemoveAll?
Trabajar con colecciones genéricas requiere decisiones claras para agregar y remover elementos. Aquí se muestra cómo pasar de un predicado explícito a formas más limpias y mantenibles.
Predicado como método: un método que recibe un Curso y devuelve bool.
// Basado en un método predicadoboolEsNombre301(Curso curso)=> curso.Nombre =="301";cursos.RemoveAll(EsNombre301);// Elimina todos con Nombre == "301".
Inferencia de tipos: desde C# 3.5 el compilador infiere el tipo del predicado al pasarlo como argumento, evitando “mappings” innecesarios.
Remoción múltiple: RemoveAll recorre la colección; elimina los que devuelven true y deja los que devuelven false.
¿Cómo reescribir con delegate para mayor claridad?
Cuando el predicado es corto, puedes definir el delegado en línea. Es legible y explícito.
// Delegado anónimo dentro de RemoveAllcursos.RemoveAll(delegate(Curso cur){return cur.Nombre =="301";});
Ventaja: encapsulas la lógica sin declarar un método aparte.
Consideración: en el delegado anónimo especifica el tipo del parámetro.
¿Cómo compactar con una expresión lambda?
La forma más concisa para condiciones simples: menos código, misma intención.
// Lambda expression, tipo inferido por la lista genéricacursos.RemoveAll(cur => cur.Nombre =="301");
Lectura directa: para cada cur, evalúa la condición y elimina si es true.
Sin tipo explícito: el compilador infiere Curso desde List<Curso>.
¿Cómo aplicar condiciones compuestas?
Cuando hay duplicados o múltiples criterios, combina condiciones lógicas.
// Eliminar todos los "501"cursos.RemoveAll(cur => cur.Nombre =="501");// Eliminar solo "501" en jornada mañanacursos.RemoveAll(cur => cur.Nombre =="501"&& cur.Jornada == TipoJornada.JornadaManana);
Bool en acción: el tipo bool es clave para filtrar en colecciones.
Criterios flexibles: combina campos como Nombre y Jornada.
¿Qué formas de comentarios usar en C# según el contexto?
Comentar bien acelera el mantenimiento y la colaboración. Usa el estilo adecuado para cada necesidad.
¿Cuándo usar comentarios de una línea y multilínea?
Una línea con doble slash para notas breves.
// Esto elimina cursos con Nombre == "301".
Multilínea para bloques más extensos.
/*
Bloque de comentarios.
Útil para desactivar secciones de código temporalmente.
*/
Atajos en Visual Studio Code:
Ctrl + K, C: poner comentarios.
Ctrl + K, U: quitar comentarios.
¿Cómo documentar métodos con comentarios XML?
Para documentación formal y autogenerada, usa triple slash.
/// <summary>/// Imprime la lista de cursos en consola./// </summary>/// <paramname="cursos">colección a imprimir.</param>voidImprimirCursos(List<Curso> cursos){/* ... */}
Ideal para proyectos profesionales.
Compatible con herramientas del ecosistema .NET.
¿Qué habilidades y conceptos clave refuerzas al practicar esto?
Al aplicar estas técnicas, mejoras tu dominio de colecciones y del modelo de delegados en C#.
Colecciones vs. arreglos: colecciones ofrecen operaciones de alto nivel como RemoveAll.
Predicado: método que recibe un tipo (Curso) y devuelve bool para decidir eliminación.
Delegado: función pasada como parámetro; puede ser método, delegado anónimo o lambda.
Expresión lambda: sintaxis compacta para delegados con inferencia de tipos.
Inferencia de tipos: el compilador deduce tipos desde el contexto genérico.
Bool: base de filtros y decisiones en recorridos.
Comentarios: //, /* */ y /// para control, desactivación de bloques y documentación.
Productividad en editor: atajos de Visual Studio Code para comentar y descomentar.
¿Te gustaría ver variantes con condiciones más complejas o con otros campos del modelo? Comparte tus dudas y casos en los comentarios.