Sobrecarga de Métodos para Parámetros de Salida Opcionales
Clase 13 de 35 • Curso de C# con .Net Core 2.1
Contenido del curso
Etapa 5 – POO reutilicemos nuestro código
- 2

Herencia para reutilizar código C#
10:30 min - 3

Herencia y Polimorfismo en Programación Orientada a Objetos
11:42 min - 4

Polimorfismo en Programación Orientada a Objetos
13:17 min - 5

Casting en C#: cuándo funciona y cuándo falla
07:09 min - 6

Conversiones seguras en C# con is y as
12:44 min - 7

Sobrescribir ToString para depuración en C#
08:15 min
Etapa 6- Ajustes y funcionalidad
Etapa 7 – Preparando información para nuestros reportes
- 11

Manejo Avanzado de Métodos y Parámetros en Programación
15:43 min - 12

Manejo de Parámetros de Salida en Visual Studio Code
04:38 min - 13

Sobrecarga de Métodos para Parámetros de Salida Opcionales
Viendo ahora - 14

Optimización de Listas: Buenas Prácticas en C#
04:16 min - 15

Dictionary: cómo funciona en C#
11:14 min - 16

Diccionarios con polimorfismo en C#
10:48 min - 17

Uso de Constantes y Enumeraciones para Optimizar Diccionarios en C#
11:33 min - 18

Foreach anidado para diccionarios en C#
13:47 min - 19

Depuración de diccionarios en C#
09:37 min - 20

Parámetro opcional para controlar impresión en C#
11:47 min - 21

Cómo usar switch en lugar de if/else
14:30 min - 22

Números aleatorios y eventos en C#
12:52 min - 23

Diccionarios y Refactoring en Programación Básica
02:13 min
Etapa 8 – Consultas
- 24

Cómo crear un reporteador en C sharp
11:42 min - 25

Generación segura de reportes en sistemas de información
10:21 min - 26

Construcción de reportes con LINQ en C#
11:48 min - 27

Diccionario con evaluaciones por asignatura
08:32 min - 28

Tipos anónimos en LINQ para reportes complejos
10:52 min - 29

Cálculo del Promedio de Notas Agrupadas por Alumno y Asignatura
10:46 min - 30

Creación de Tipos de Datos Personalizados en Programación Avanzada
12:05 min - 31

Generación de Reportes con LINQ en C#
02:09 min
Etapa 9 – Creando una UI de Consola
Optimiza tu código en C# con una técnica sencilla y eficaz: sobrecarga de métodos con parámetros de salida. Aprenderás a evitar pasar out parameters que no necesitas, a usar un parámetro dummy como fachada y a presentar una interfaz más amigable para quien consume tu API interna, manteniendo la funcionalidad completa en un solo punto de verdad.
¿Qué problema resuelve la sobrecarga con parámetros de salida?
El reto inicial es claro: si no te interesa alguno de los contadores de salida, ¿debes enviarlos siempre? La respuesta práctica es no. Con sobrecarga [01:00] evitamos forzar al desarrollador a pasar datos irrelevantes, sin romper la firma principal.
- Los parámetros de salida no pueden ser opcionales [00:40].
- Asignarlos con un valor por defecto no tiene sentido porque se definen dentro del método [00:45].
- La solución es crear métodos sobrecargados que llamen al método completo con un dummy [01:30].
- Se mantiene un único método “real” que hace todo y los demás actúan como wrappers [03:40].
Además, se preserva la elegibilidad del código: llamas solo con lo necesario y evitas ruido al pasar múltiples out vacíos [00:25].
¿Cómo implementar las sobrecargas y usar un parámetro dummy?
La estrategia: crear un método principal que pide todos los parámetros de salida y varias sobrecargas que oculten esa complejidad. Cada sobrecarga llama al método completo, enviando out dummy en los parámetros no requeridos [01:30]. El orden recomendado en el ejemplo: primero los parámetros de salida y luego los demás [02:00].
// Método completo: pide todos los parámetros de salida
public IEnumerable<ObjetoEscuela> getObjetosEscuela(
/* parámetros opcionales que indican qué información obtener */,
out int conteoEvaluaciones,
out int conteoCursos,
out int conteoAsignaturas,
out int conteoAlumnos)
{
// ... implementación completa
}
// Sobrecarga sin parámetros de salida: usa dummy como fachada
public IEnumerable<ObjetoEscuela> getObjetosEscuela(
/* parámetros opcionales */)
{
int dummy;
return getObjetosEscuela(
/* parámetros opcionales */,
out dummy, out dummy, out dummy, out dummy);
}
// Sobrecarga con un parámetro de salida: conteo de evaluaciones [02:10]
public IEnumerable<ObjetoEscuela> getObjetosEscuela(
out int conteoEvaluaciones,
/* parámetros opcionales */)
{
int dummy;
return getObjetosEscuela(
/* parámetros opcionales */,
out conteoEvaluaciones, out dummy, out dummy, out dummy);
}
// Sobrecarga con dos parámetros de salida: evaluaciones y cursos [02:40]
public IEnumerable<ObjetoEscuela> getObjetosEscuela(
out int conteoEvaluaciones,
out int conteoCursos,
/* parámetros opcionales */)
{
int dummy;
return getObjetosEscuela(
/* parámetros opcionales */,
out conteoEvaluaciones, out conteoCursos, out dummy, out dummy);
}
// Sobrecarga con tres parámetros de salida: + asignaturas [03:00]
public IEnumerable<ObjetoEscuela> getObjetosEscuela(
out int conteoEvaluaciones,
out int conteoCursos,
out int conteoAsignaturas,
/* parámetros opcionales */)
{
int dummy;
return getObjetosEscuela(
/* parámetros opcionales */,
out conteoEvaluaciones, out conteoCursos, out conteoAsignaturas, out dummy);
}
Puntos clave del patrón: - Un solo método “verdadero” que realiza la lógica y exige todos los out [03:35]. - Varias sobrecargas como wrappers que simplifican la llamada [03:40]. - Uso de un parámetro dummy para cubrir los out no requeridos [01:30]. - Orden de salida coherente: evaluaciones, cursos, asignaturas y alumnos [02:55].
¿Qué opciones de llamada ofrece y por qué mejora la interfaz?
Al escribir “getObjetosEscuela(” el IDE muestra “sobrecarga 1 de 5” y las variantes disponibles [03:30]. Esto permite elegir exactamente qué necesitas: desde cero salidas hasta todas, sin obligarte a pasar parámetros inútiles.
- Opción 1: solo parámetros opcionales de entrada, sin salidas [01:50].
- Opción 2: retorno con conteo de evaluaciones [02:10].
- Opción 3: retorno con evaluaciones y cursos [02:40].
- Opción 4: retorno con evaluaciones, cursos y asignaturas [03:00].
- Opción 5: retorno con todos los conteos, incluyendo alumnos [03:35].
Beneficios inmediatos: - Interfaz más amigable para desarrolladores: llamas con lo justo y necesario [03:50]. - Consistencia: el nombre del método se conserva en todas las variantes [02:50]. - Mantenibilidad: cambios en la lógica suceden en un solo lugar [03:35]. - Enfoque en dos públicos: usuario final (administradores) y desarrolladores que integran la funcionalidad [04:10].
Palabras clave y habilidades destacadas: - Sobrecarga de métodos en C# [01:00]. - Parámetros de salida con out [00:40]. - Parámetros opcionales de entrada [01:50]. - Patrón de wrappers para exponer una interfaz limpia [03:40]. - Uso de dummy como objeto fachada para salidas no usadas [01:30].
¿Te gustaría ver variantes con validaciones o nombres de parámetros más expresivos? Comparte en comentarios qué casos de uso necesitas modelar y lo exploramos juntos.