EAS Latam Academy Logo EAS Latam

C# a Nivel Intermedio

Este desafío sube el nivel, enfocándose en las características que hacen de C# un lenguaje potente y flexible.

¿Qué evaluaremos?

1. Programación Orientada a Objetos Avanzada

  • Clases Abstractas vs. Interfaces: Una de las decisiones de diseño más comunes. Debes saber que una clase puede implementar múltiples interfaces pero solo heredar de una clase base (sea abstracta or concreta). Las interfaces definen un contrato, mientras que las clases abstractas pueden proveer implementación base.
  • Polimorfismo: La habilidad de un objeto de tomar muchas formas. En C#, se logra mediante la herencia junto con el uso de métodos virtual en la clase base y override en la clase derivada.

2. Language-Integrated Query (LINQ)

  • Métodos de Extensión: LINQ se implementa en gran parte a través de métodos de extensión, que deben ser public static y estar dentro de una clase static.
  • Ejecución Diferida (Deferred Execution): Métodos como Select y Where no se ejecutan hasta que iteras sobre la colección (p.ej. con un foreach o .ToList()). La palabra clave yield return es la magia que permite crear estos iteradores fácilmente.
  • Carga de Datos en EF Core: En un contexto de base de datos, es vital saber cargar datos relacionados para evitar el problema N+1. El método .Include() permite la carga ansiosa (Eager Loading).

3. Programación Asíncrona

  • async/await: El objetivo principal de este patrón es liberar el hilo actual (por ejemplo, el hilo de la UI o un hilo de ASP.NET Core) mientras se espera una operación de I/O (entrada/salida), mejorando la escalabilidad y la responsividad.

4. Tipos y Genéricos

  • Delegados (Delegates): Son el fundamento de los eventos en C#. Un delegado es un tipo seguro que encapsula una referencia a un método, permitiendo que los métodos sean pasados como argumentos.
  • Colecciones Read-Only: Entender las diferencias sutiles entre IReadOnlyList<T> (que garantiza acceso por índice) y IReadOnlyCollection<T> (que solo garantiza un Count y la capacidad de ser iterada).

Superar este nivel indica que no solo escribes código, sino que también tomas decisiones de diseño informadas.

¿Listo para el desafío?

Has revisado la teoría. Ahora es momento de poner a prueba tus conocimientos.

Iniciar Desafío