Перегрузка методов в C#: примеры и объяснение

Перегрузка методов — мощная возможность языка C#, позволяющая создавать несколько методов с одинаковым именем, но различающихся по параметрам. Это значительно упрощает разработку и повышает читаемость кода.

Пример перегрузки

Создадим класс Sam с методом Multiply, перемножающим числа. Сначала создадим метод с двумя параметрами:

public class Sam
{
    public void Multiply(int a, int b)
    {
        Console.WriteLine($"Результат: {a * b}");
    }
}

Вызов метода:

Sam test = new Sam();
test.Multiply(2, 23); // Вывод: Результат: 46

Добавим метод Multiply с тремя параметрами:

    public void Multiply(int a, int b, int c)
    {
        Console.WriteLine($"Результат: {a * b * c}");
    }

Вызов:

test.Multiply(2, 2, 3); // Вывод: Результат: 12

Этот подход неудобен при большом количестве параметров.

Реализация перегрузки

В C# перегрузка методов проста. Достаточно определить несколько методов с одним именем, но разными сигнатурами (количеством или типом параметров). Компилятор выбирает подходящий метод по переданным аргументам.

Пример с двумя и тремя параметрами:

public class Sam
{
    public void Multiply(int a, int b)
    {
        Console.WriteLine($"Результат: {a * b}");
    }
    public void Multiply(int a, int b, int c)
    {
        Console.WriteLine($"Результат: {a * b * c}");
    }
}

Компилятор определяет, какой метод вызвать, в зависимости от количества параметров.

Различные типы параметров

Перегрузку можно использовать не только для изменения количества, но и типов параметров. Например, метод Multiply, принимающий строку:

    public string Multiply(string str)
    {
        return str;
    }

Вызов с разными параметрами:

test.Multiply(2, 23); // Вывод: Результат: 46
test.Multiply(2, 2, 3); // Вывод: Результат: 12
Console.WriteLine(test.Multiply("Hello")); // Вывод: Hello

Важно: если методы отличаются только именами параметров, а типы одинаковы, компилятор выдаст ошибку. Методы должны отличаться типом или количеством параметров. Изменение только типа возвращаемого значения не является перегрузкой.

Цель перегрузки методов

Перегрузка методов — удобный способ создания гибкого и читабельного кода. Классический пример — методы преобразования типов в классе Convert. Вместо множества методов типа ConvertFromStringToInt32, ConvertFromFloatToInt32 и т.д., используется один метод ToInt32, перегруженный для различных типов входных данных. Это упрощает использование класса и делает код понятнее.

Перегрузка методов — важная концепция в C#, позволяющая создавать более гибкий и читаемый код. Она достигается путем определения нескольких методов с одинаковым именем, но с разными сигнатурами. Компилятор определяет, какой метод использовать, в зависимости от переданных аргументов. Правильное использование перегрузки методов улучшает структуру и удобство использования кода.

Что будем искать? Например,программа