Освоение перегрузки методов в C#: концепции, примеры и лучшие практики
Перегрузка методов в C#: полное руководство
Узнайте, как перегружать методы в C#, включая изменение количества параметров, их типов и порядка, с наглядными примерами.
В C# класс может содержать несколько методов с одинаковым именем, но различными списками параметров — это называется перегрузкой методов. Например:
void display() { ... }
void display(int a) { ... }
float display(double a) { ... }
float display(int a, float b) { ... }
Здесь метод display() перегружен. Эти методы имеют одно имя, но принимают разные аргументы.
Примечание: перегрузка определяется исключительно списками параметров; возвращаемые типы могут отличаться.
1. Изменение количества параметров
Метод можно перегрузить, если отличается количество параметров.
void display(int a) { ... }
void display(int a, int b) { ... }
Пример:
using System;
namespace MethodOverload {
class Program {
// метод с одним параметром
void display(int a) {
Console.WriteLine("Аргументы: " + a);
}
// метод с двумя параметрами
void display(int a, int b) {
Console.WriteLine("Аргументы: " + a + " и " + b);
}
static void Main(string[] args) {
Program p1 = new Program();
p1.display(100);
p1.display(100, 200);
Console.ReadLine();
}
}
}
Результат
Аргументы: 100 Аргументы: 100 и 200
В зависимости от количества переданных аргументов вызывается соответствующая перегрузка.
p1.display(100)вызывает версию с одним параметром.p1.display(100, 200)вызывает версию с двумя параметрами.
2. Изменение типов данных параметров
Перегрузка также работает, когда типы параметров различаются, даже если их количество одинаковое.
void display(int a) { ... }
void display(string b) { ... }
Пример:
using System;
namespace MethodOverload {
class Program {
// метод с параметром int
void display(int a) {
Console.WriteLine("Тип int: " + a);
}
// метод с параметром string
void display(string b) {
Console.WriteLine("Тип string: " + b);
}
static void Main(string[] args) {
Program p1 = new Program();
p1.display(100);
p1.display("Programiz");
Console.ReadLine();
}
}
}
Результат
Тип int: 100 Тип string: Programiz
p1.display(100)вызывает перегрузкуint.p1.display("Programiz")вызывает перегрузкуstring.
3. Изменение порядка параметров
Когда список параметров имеет одинаковые типы и количество, изменение их порядка создает отдельные перегрузки.
void display(int a, string b) { ... }
void display(string b, int a) { ... }
Пример:
using System;
namespace MethodOverload {
class Program {
// метод с параметрами int и string
void display(int a, string b) {
Console.WriteLine("int: " + a);
Console.WriteLine("string: " + b);
}
// метод с параметрами string и int
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();
}
}
}
Результат
int: 100 string: Programming string: Programiz int: 400
p1.display(100, "Programming")вызывает перегрузкуint, string.p1.display("Programiz", 400)вызывает перегрузкуstring, int.
Язык C
- Абстрактные классы и методы в C#: практическое руководство
- Частичные классы и методы в C#: понимание и применение
- Sealed-классы и sealed-методы в C#: когда использовать, примеры и повышение безопасности кода
- Освоение перегрузки конструкторов в C#
- Перегрузка операторов в Python: практическое руководство
- Понимание задач (Tasks) в Verilog: отличия от функций, синтаксис и применение
- Мастерство задач отображения в Verilog: эффективная отладка и логирование
- Методы в C#: определение, вызов, рекурсия и параметры
- Перегрузка операторов в C#: пользовательские типы и кастомная логика
- Анонимные методы в C#: Упрощение работы с делегатами