TOC

This article has been localized into Russian by the community.

Классы:

Перегрузка метода

Многие языки программирования поддерживают технологию, называемую default / optional parameters. Она позволяет программисту сделать один или несколько параметров необязательными, давая им значение по умолчанию. Это особенно удобно при добавлении функциональности в существующий код.

Например, можно добавить функциональность к существующей функции, для которой требуется добавить один или несколько параметров. Таким образом, вы нарушите существующий код, вызывающий эту функцию, так как они теперь не будут передавать необходимое количество параметров. Чтобы обойти эту проблему, можно определить новые добавленные параметры как необязательные и присвоить им значение по умолчанию, соответствующее тому, как будет работать код перед добавлением параметров.

Параметры по умолчанию были введены в C# версии 4.0, но до этого программисты C# использовали другую технику, которая в основном делает то же самое, называемую перегрузкой методов. Она позволяет программисту определить несколько методов с тем же именем, если они принимают другой набор параметров. При использовании классов .NET framework, вы скоро поймете, что метод перегрузки используется повсеместно. Хорошим примером этого является метод Substring () класса String. Он используется с дополнительной перегрузкой, как эта:

string Substring (int startIndex)
string Substring (int startIndex, int length)

Вы можете вызвать его с одним или двумя параметрами. Если вы вызываете его только с одним параметром, параметр length считается остальной частью строки, что экономит время, когда мы просто хотим получить последнюю часть строки.

Итак, определяя несколько версий одной и той же функции, как избежать наличия одного и того же кода в нескольких местах? Это на самом деле довольно просто: мы позволяем простым версиям метода использовать его сложную версию, чтобы сделать всю работу. Рассмотрим следующий пример:

class SillyMath
{
    public static int Plus(int number1, int number2)
    {
        return Plus(number1, number2, 0);
    }

    public static int Plus(int number1, int number2, int number3)
    {
        return number1 + number2 + number3;
    }
}

Мы определяем метод Plus в двух разных версиях. Первый из них принимает два paramaters, для добавления двух чисел, в то время как вторая версия занимает три числа. Фактическая работа делается в версии, которая принимает три числа - если мы хотим добавить два, мы назвали три версии параметра, и просто использовать 0 в качестве третьего параметра, действуя в качестве значения по умолчанию. Я знаю, это глупый пример, как указано в названии класса, но он должен дать вам представление о том, как все это работает.

Теперь, всякий раз, когда вам хочется сделать расширенную математику, добавив в общей сложности четыре числа (шучу), очень просто добавить новую перегрузку:

class SillyMath
{
    public static int Plus(int number1, int number2)
    {
        return Plus(number1, number2, 0);
    }

    public static int Plus(int number1, int number2, int number3)
    {
        return Plus(number1, number2, number3, 0);
    }

    public static int Plus(int number1, int number2, int number3, int number4)
    {
        return number1 + number2 + number3 + number4;
    }
}

Самое классное в этом то, что все ваши существующие вызовы метода Plus будут продолжать работать, как будто ничего не изменилось. Чем больше вы используете C#, тем больше вы научитесь ценить перегрузки методов.


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!