COMPARTE ESTE ARTÍCULO

En este examen encontrarás cinco ejercicios de nivel avanzado que cubren conceptos como genéricos con restricciones, LINQ, eventos, programación asíncrona y reflexión. Cada enunciado va seguido de su solución completa en C# para que puedas comparar tu implementación.


1. Pila genérica con restricción y método Máximo

Enunciado:
Implementa una clase genérica BoundedStack<T> que:

  1. Permita almacenar elementos de tipo T, obligando que T : IComparable<T>.
  2. Ofrezca métodos Push(T item), T Pop() y T Peek().
  3. Incorpore un método T Max() que devuelva el elemento mayor actualmente almacenado en la pila.
  4. Lance InvalidOperationException si se llama a Pop, Peek o Max cuando la pila está vacía.

Solución:


2. Consultas LINQ avanzadas sobre objetos

Enunciado:
Dada la clase Estudiante { string Nombre; string Curso; double[] Notas; }, escribe un programa que:

  1. Genere una lista de al menos 8 estudiantes con cursos “Matemáticas”, “Física” y “Literatura”.
  2. Obtenga los 3 estudiantes con mayor promedio, independientemente de su curso.
  3. Agrupe a todos los estudiantes por curso y muestre, para cada curso, el promedio general de sus alumnos.

Solución:


3. Implementación del patrón Observer con eventos

Enunciado:
Crea una clase Thermometer que:

  1. Exponga un evento TemperatureChanged de tipo EventHandler<TemperatureChangedEventArgs>.
  2. Tenga propiedad double Temperature. Al cambiarla, dispare el evento con el valor antiguo y el nuevo.

Define TemperatureChangedEventArgs con OldTemperature y NewTemperature. Luego, en Main, crea un termómetro y suscribe dos manejadores:

  • Uno que muestre en consola el cambio.
  • Otro que escriba en un log (simulado con List<string>).

Solución:


4. Descarga asíncrona de múltiples URLs

Enunciado:
Escribe un programa que:

  1. Lea del usuario N URLs.
  2. Use HttpClient y async/await para descargarlas todas en paralelo.
  3. Informe, para cada URL, cuántos bytes se han descargado y el tiempo que tardó.
  4. Maneje excepciones individuales sin abortar las demás descargas.

Solución:


5. Reflexión para invocar métodos con atributo custom

Enunciado:
Define un atributo RunMeAttribute : Attribute. Luego, en un ensamblado cualquiera, habrá varias clases con métodos estáticos marcados con [RunMe] y sin parámetros.

  1. Usa reflexión para:
    • Cargar el ensamblado actual.
    • Buscar todos los métodos públicos estáticos sin parámetros que tengan el atributo RunMeAttribute.
    • Invócalos en tiempo de ejecución.
  2. Muestra el nombre de cada método invocado.

Solución:



¿QUÉ TE HA PARECIDO EL ARTÍCULO? Danos tu opinión al final de la página.
Deja tu comentario y ayúdanos a crecer.


¡SÍGUENOS EN TUS REDES FAVORITAS!
AYUDANOS A CRECER Y QUE LLEGUEMOS A TODAS LAS PERSONAS QUE NOS NECESITANA. SÍGUENOS EN TUS REDES.
Entra AQUÍ y elíge donde seguirnos. 

 

 


NUESTRAS ÚLTIMAS PUBLICACIONES

INSTAGRAM

TIKTOK


 …Y PRONTO MUCHAS MÁS

AYUDANOS A CRECER Y A LLEGAR A TODAS LAS PERSONAS QUE NOS NECESITAN.

Contenido restringido

Acceso de usuarios existentes
   
Registro de un nuevo usuario
*Campo necesario

Categories:

Tags:

Comments are closed

Estado de acceso
ESTADO DE ACCESO
TRADUCTORES
COMPARTENOS
Insert math as
Block
Inline
Additional settings
Formula color
Text color
#333333
Type math using LaTeX
Preview
\({}\)
Nothing to preview
Insert
error: CONTENIDO PROTEGIDO