Что такое перегрузка методов?
Перегрузка методов (или функций) позволяет создавать несколько методов с одним и тем же именем, но с разным количеством или типами параметров. Это упрощает работу, так как не нужно запоминать множество различных имен для похожих функций. Достаточно обращаться к одному имени, передавая различные параметры. Аналогичный функционал используется при перегрузке конструкторов. Например, в классе Robot могут быть несколько конструкторов с разным количеством параметров.
Практическое применение
Рассмотрим пример перегрузки метода Multiply, который будет перемножать переданные параметры:
public static void Multiply(int a, int b)
{
int res = a * b;
Console.WriteLine($"Result: {res}");
}
Этот метод принимает два целых числа (int) и выводит их произведение в консоль. Добавим перегрузки:
public static void Multiply(float a, float b)
{
float res = a * b;
Console.WriteLine($"Result: {res}");
}
public static void Multiply(int a)
{
int res = a * 2;
Console.WriteLine($"Result: {res}");
}
Теперь есть три метода Multiply: один принимает два целых числа, другой — два числа с плавающей точкой, а третий — одно целое число. Компилятор C# автоматически выбирает подходящий метод на основе переданных параметров. Это аналогично работе Console.WriteLine(), принимающего различные типы данных.
Можно создавать любое количество перегруженных методов, главное, чтобы они отличались по сигнатуре (количество и тип параметров). Примеры вызова:
Multiply(5, 6); // Вызов метода с двумя целыми числами
Multiply(2.5f, 3.7f); // Вызов метода с двумя числами с плавающей точкой
Multiply(10); // Вызов метода с одним целым числом
Перегрузка методов в классе
Перегрузку методов можно применять и внутри классов. Например, в классе Robot можно перегрузить метод SetParams:
public void SetParams(string name, int weight, Point coordinates) { ... }
public void SetParams(string name, int weight) { ... }
public void SetParams(string name) { ... }
public void SetParams(int weight) { ... }
Метод SetParams имеет несколько перегрузок, позволяющих устанавливать различные параметры робота: имя, вес, координаты, или их сочетание.
Перегрузка методов — мощный инструмент в C#, позволяющий создавать более гибкий и читаемый код. Правильное использование перегрузки упрощает работу с функциями, имеющими схожую логику, но работающими с разными наборами данных. Перегруженные методы должны отличаться по сигнатуре (количество и тип параметров).