csharp-sobrecarga-funciones

Qué es la sobrecarga de funciones en C#

La sobrecarga de funciones es una característica en C# que nos permite definir múltiples versiones métodos con el mismo nombre, pero diferentes parámetros

El compilador de C# determina que versión del método se debe invocar en función de los argumentos proporcionados durante la llamada.

Esto proporciona flexibilidad y mejora la legibilidad del código al permitir que un mismo método pueda adaptarse a diferentes escenarios.

Sintaxis de la sobrecarga

Para usar la sobrecarga de funciones, las distintas versiones de la función deben tener diferentes argumentos. Es decir, deben recibir diferentes tipos y / o cantidad de parámetros.

// Suma de dos enteros
public int Sumar(int a, int b)
{
	return a + b;
}

// Suma de tres enteros
public int Sumar(int a, int b, int c)
{
	return a + b + c;
}

// Suma de dos números de punto flotante
public double Sumar(double a, double b)
{
	return a + b;
}

En este ejemplo, el método Sumar está sobrecargado tres veces

  • Una para sumar dos enteros
  • Otra para sumar tres enteros
  • Otra para sumar dos números de punto flotante.

No es posible emplear sobrecarga utilizando el tipo de parámetro devuelto por la función. Únicamente intervienen los parámetros.

Por ejemplo el siguiente caso, donde tenemos dos MiMetodo con el mismo número de parámetros, pero diferente return, no es válido.

public int MiMetodo(int a, int b)
{
}

// esto no puede hacerse
public double MiMetodo(int a, int b)
{
}

Ejemplos prácticos

Calcular el área de un rectángulo

En este ejemplo, se muestra cómo sobrecargar una función para calcular el área de un rectángulo usando diferentes conjuntos de parámetros.

// Función para calcular el área de un rectángulo usando longitud y ancho
public static double CalcularArea(double longitud, double ancho)
{
    return longitud * ancho; // Retornar el área del rectángulo
}

// Función para calcular el área de un rectángulo usando un solo lado (cuadrado)
public static double CalcularArea(double lado)
{
    return lado * lado; // Retornar el área del cuadrado
}

// Uso
double areaRectangulo = CalcularArea(5.0, 3.0); // Llamar a la función con dos parámetros
double areaCuadrado = CalcularArea(4.0); // Llamar a la función con un parámetro

// Imprimir los resultados
Console.WriteLine($"Área del rectángulo: {areaRectangulo}");
Console.WriteLine($"Área del cuadrado: {areaCuadrado}");

Sobrecarga para sumar números

En este ejemplo, se muestra cómo sobrecargar una función para sumar números de diferentes tipos: enteros y decimales (double).

// Función para sumar dos números enteros
public static int Sumar(int a, int b)
{
    return a + b; // Retornar la suma de dos números enteros
}

// Función para sumar dos números decimales (double)
public static double Sumar(double a, double b)
{
    return a + b; // Retornar la suma de dos números decimales
}

// Uso
int sumaEnteros = Sumar(3, 5); // Llamar a la función con dos números enteros
double sumaDecimales = Sumar(3.5, 5.7); // Llamar a la función con dos números decimales

// Imprimir los resultados
Console.WriteLine($"Suma de enteros: {sumaEnteros}");
Console.WriteLine($"Suma de decimales: {sumaDecimales}");

Imprimir información de un empleado

En este ejemplo, se muestra cómo sobrecargar una función para imprimir información de un empleado usando diferentes conjuntos de parámetros.

// Función para imprimir información de un empleado usando nombre y edad
public static void ImprimirEmpleado(string nombre, int edad)
{
    Console.WriteLine($"Empleado: {nombre}, Edad: {edad}"); // Imprimir nombre y edad
}

// Función para imprimir información de un empleado usando nombre, edad y departamento
public static void ImprimirEmpleado(string nombre, int edad, string departamento)
{
    Console.WriteLine($"Empleado: {nombre}, Edad: {edad}, Departamento: {departamento}"); // Imprimir nombre, edad y departamento
}

// Uso
ImprimirEmpleado("Luis", 30); // Llamar a la función con dos parámetros
ImprimirEmpleado("María", 25, "Ventas"); // Llamar a la función con tres parámetros

Estos ejemplos tienen el propósito de mostrar cómo utilizar la sobrecarga. No significa que sea la mejor forma de resolver el problema que abordan. Lo normal es que haya alternativas mejores