Sobrecarga do método C#
Sobrecarga do método C#
Neste artigo, você aprenderá sobre sobrecarga de métodos em C# com a ajuda de exemplos.
Em C#, pode haver dois ou mais métodos em uma classe com o mesmo nome, mas diferentes números, tipos e ordem de parâmetros, é chamado de sobrecarga de método. Por exemplo:
void display() { ... }
void display(int a) { ... }
float display(double a) { ... }
float display(int a, float b) { ... }
Aqui, o display() método está sobrecarregado. Esses métodos têm o mesmo nome, mas aceitam argumentos diferentes.
Observação :Os tipos de retorno dos métodos acima não são os mesmos. Isso ocorre porque a sobrecarga de métodos não está associada a tipos de retorno. Métodos sobrecarregados podem ter tipos de retorno iguais ou diferentes, mas devem ter parâmetros diferentes.
Podemos executar a sobrecarga de métodos das seguintes maneiras:
1. Ao alterar o número de parâmetros
Podemos sobrecarregar o método se o número de parâmetros nos métodos for diferente.
void display(int a) {
...
}
...
void display(int a, int b) {
...
}
Aqui, temos dois métodos em uma classe com o mesmo nome - display() . É possível ter mais de um método com o mesmo nome porque o número de parâmetros nos métodos é diferente. Por exemplo,
using System;
namespace MethodOverload {
class Program {
// method with one parameter
void display(int a) {
Console.WriteLine("Arguments: " + a);
}
// method with two parameters
void display(int a, int b) {
Console.WriteLine("Arguments: " + a + " and " + b);
}
static void Main(string[] args) {
Program p1 = new Program();
p1.display(100);
p1.display(100, 200);
Console.ReadLine();
}
}
}
Saída
Arguments: 100 Arguments: 100 and 200
No exemplo acima, sobrecarregamos o display() método:
- um método tem um parâmetro
- outro tem dois parâmetros
Com base no número do argumento passado durante a chamada do método, o método correspondente é chamado.
p1.display(100)
- chama o método com um único parâmetrop1.display(100, 200)
- chama o método com dois parâmetros
2. Alterando os tipos de dados dos parâmetros
void display(int a) {
...
}
...
void display(string b) {
...
}
Aqui, temos dois métodos - display() com o mesmo número de parâmetros. É possível ter mais de um display() método com o mesmo número de parâmetros porque o tipo de dados dos parâmetros nos métodos é diferente. Por exemplo,
using System;
namespace MethodOverload {
class Program {
// method with int parameter
void display(int a) {
Console.WriteLine("int type: " + a);
}
// method with string parameter
void display(string b) {
Console.WriteLine("string type: " + b);
}
static void Main(string[] args) {
Program p1 = new Program();
p1.display(100);
p1.display("Programiz");
Console.ReadLine();
}
}
}
Saída
int type: 100 string type: Programiz
No programa acima, sobrecarregamos o display() método com diferentes tipos de parâmetros.
Com base no tipo de argumentos passados durante a chamada do método, o método correspondente é chamado.
p1.display(100)
- chama o método comint
parâmetro de tipop1.display("Programiz")
- chama o método comstring
parâmetro de tipo
3. Alterando a ordem dos parâmetros
void display(int a, string b) {
...
}
...
void display(string b, int a) {
...
}
Aqui, temos dois métodos - display() . É possível ter mais de um display() método com o mesmo número e tipo de parâmetro porque a ordem do tipo de dados dos parâmetros nos métodos é diferente. Por exemplo,
using System;
namespace MethodOverload {
class Program {
// method with int and string parameters
void display(int a, string b) {
Console.WriteLine("int: " + a);
Console.WriteLine("string: " + b);
}
// method with string andint parameter
void display(string b, int a) {
Console.WriteLine("string: " + b);
Console.WriteLine("int: " + a);
}
static void Main(string[] args) {
Program p1 = new Program();
p1.display(100, "Programming");
p1.display("Programiz", 400);
Console.ReadLine();
}
}
}
Saída
int: 100 string: Programming string: Programiz int: 400
No programa acima, sobrecarregamos o display() com diferentes ordens de parâmetros.
Com base na ordem dos argumentos passados durante a chamada do método, o método correspondente é chamado.
p1.display(100, "Programming")
- chama o método comint
estring
parâmetro respectivamentep1.display("Programiz", 400)
- chama o método comstring
eint
parâmetro respectivamente
Linguagem C