Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Sobrecarga de Métodos | Fundamentos Esenciales de POO
C# Más Allá de lo Básico

bookSobrecarga de Métodos

La sobrecarga de métodos en C# permite definir múltiples métodos con el mismo nombre en una clase, diferenciándose por los tipos de parámetros, la cantidad de parámetros o ambos, proporcionando una forma más limpia y adaptable de manejar diversos escenarios de entrada.

Por ejemplo, se pueden tener dos métodos con el mismo nombre pero diferente número de parámetros:

index.cs

index.cs

copy
12345678910111213141516171819
using System; class ConsoleApp { static int sum(int a, int b) { return a + b; } static int sum(int a, int b, int c) { return a + b + c; } static void Main() { Console.WriteLine(sum(5, 7)); Console.WriteLine(sum(5, 7, 9)); } }

En el código anterior, el método sum fue sobrecargado para tener dos variantes de parámetros. Un método también puede tener diferentes tipos de retorno para sus distintas variantes; sin embargo, es importante que no exista ambigüedad, de lo contrario el compilador mostrará un error, ya que la forma principal en que el compilador distingue entre dos métodos con el mismo nombre es su lista de parámetros.

Por ejemplo:

index.cs

index.cs

copy
12345678910
static int sum(int a, int b) { return a + b; } // This is wrong and will show an error static long sum(int a, int b) { return a + b; }

El código anterior es incorrecto porque los parámetros son exactamente los mismos que los del método original, mientras que el tipo de retorno es diferente. Esto no está permitido, ya que hace imposible que el compilador (o incluso las personas) elijan cuál ejecutar cuando se llama al método:

index.cs

index.cs

copy
123
sum(1, 3); // Should it execute `int sum(int a, int b)` or `long sum(int a, int b)` ? // It is impossible to reach a good answer for the compiler in this case so it shows an error

Por este motivo, al sobrecargar un método, un método que tenga un tipo de retorno diferente también debe tener un conjunto diferente de parámetros para que sea distinguible y evitar ambigüedades. Lo siguiente también es incorrecto:

index.cs

index.cs

copy
12345678910
static int sum(int a, int b) { return a + b; } // This is wrong and will show an error static long sum(int first, int second) { return first + second; }

Esto se debe a que los nombres de los parámetros no importan, pero sí sus tipos. Los siguientes casos de sobrecarga son válidos:

index.cs

index.cs

copy
1234567891011121314151617181920212223242526
using System; class ConsoleApp { static int sum(int a, int b) { return a + b; } static long sum(long a, long b) { return a + b; } static string sum(int a, long b, float c) { return Convert.ToString(a + b + c); } static void Main() { Console.WriteLine(sum(5, 7)); // Calls 'int sum()' Console.WriteLine(sum(500000000000, 700000000000)); // Calls 'long sum()' Console.WriteLine(sum(5, 7, 9)); // Calls 'string sum()' } }

1. ¿Cómo diferencia el compilador entre métodos sobrecargados?

2. ¿Cuál de los siguientes es un ejemplo válido de sobrecarga de métodos?

question mark

¿Cómo diferencia el compilador entre métodos sobrecargados?

Select the correct answer

question mark

¿Cuál de los siguientes es un ejemplo válido de sobrecarga de métodos?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 4. Capítulo 7

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

Awesome!

Completion rate improved to 2.04

bookSobrecarga de Métodos

Desliza para mostrar el menú

La sobrecarga de métodos en C# permite definir múltiples métodos con el mismo nombre en una clase, diferenciándose por los tipos de parámetros, la cantidad de parámetros o ambos, proporcionando una forma más limpia y adaptable de manejar diversos escenarios de entrada.

Por ejemplo, se pueden tener dos métodos con el mismo nombre pero diferente número de parámetros:

index.cs

index.cs

copy
12345678910111213141516171819
using System; class ConsoleApp { static int sum(int a, int b) { return a + b; } static int sum(int a, int b, int c) { return a + b + c; } static void Main() { Console.WriteLine(sum(5, 7)); Console.WriteLine(sum(5, 7, 9)); } }

En el código anterior, el método sum fue sobrecargado para tener dos variantes de parámetros. Un método también puede tener diferentes tipos de retorno para sus distintas variantes; sin embargo, es importante que no exista ambigüedad, de lo contrario el compilador mostrará un error, ya que la forma principal en que el compilador distingue entre dos métodos con el mismo nombre es su lista de parámetros.

Por ejemplo:

index.cs

index.cs

copy
12345678910
static int sum(int a, int b) { return a + b; } // This is wrong and will show an error static long sum(int a, int b) { return a + b; }

El código anterior es incorrecto porque los parámetros son exactamente los mismos que los del método original, mientras que el tipo de retorno es diferente. Esto no está permitido, ya que hace imposible que el compilador (o incluso las personas) elijan cuál ejecutar cuando se llama al método:

index.cs

index.cs

copy
123
sum(1, 3); // Should it execute `int sum(int a, int b)` or `long sum(int a, int b)` ? // It is impossible to reach a good answer for the compiler in this case so it shows an error

Por este motivo, al sobrecargar un método, un método que tenga un tipo de retorno diferente también debe tener un conjunto diferente de parámetros para que sea distinguible y evitar ambigüedades. Lo siguiente también es incorrecto:

index.cs

index.cs

copy
12345678910
static int sum(int a, int b) { return a + b; } // This is wrong and will show an error static long sum(int first, int second) { return first + second; }

Esto se debe a que los nombres de los parámetros no importan, pero sí sus tipos. Los siguientes casos de sobrecarga son válidos:

index.cs

index.cs

copy
1234567891011121314151617181920212223242526
using System; class ConsoleApp { static int sum(int a, int b) { return a + b; } static long sum(long a, long b) { return a + b; } static string sum(int a, long b, float c) { return Convert.ToString(a + b + c); } static void Main() { Console.WriteLine(sum(5, 7)); // Calls 'int sum()' Console.WriteLine(sum(500000000000, 700000000000)); // Calls 'long sum()' Console.WriteLine(sum(5, 7, 9)); // Calls 'string sum()' } }

1. ¿Cómo diferencia el compilador entre métodos sobrecargados?

2. ¿Cuál de los siguientes es un ejemplo válido de sobrecarga de métodos?

question mark

¿Cómo diferencia el compilador entre métodos sobrecargados?

Select the correct answer

question mark

¿Cuál de los siguientes es un ejemplo válido de sobrecarga de métodos?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 4. Capítulo 7
some-alt