Урок 8. Перегрузка методов

Под перегрузкой методов понимается, создание нескольких методов (два или более) с одинаковым именем, но различным типом и/или количеством параметров.

Наборы параметров перегруженных методов могут отличаться порядком следования, количеством, типом. Перегруженные метода могут отличаться наличием ref/out аргументов, но только в том случае, если они имеются только у одного метода. Если единственное различие между методами заключается в том, что один метод принимает аргумент ref, а другой – out, они не могут быть перегружены.

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

Пример перегрузки метода Function и их вызовов:

// Перегруженные методы могут отличаться типом и количеством аргументов, а также ref и out параметрами.

static void Function()                 // 1-я перегрузка.   
{
    Console.WriteLine("Hello!");
}

static void Function(string s)         // 2-я перегрузка.
{
    Console.WriteLine(s);
}

// Перегруженные методы не могут отличаться возвращаемыми значениями!
//static string Function(string s)              
//{
//    return s;
//}

static void Function(int i)            // 3-я перегрузка.
{
    Console.WriteLine(i);
}

static void Function(double d)         // 4-я перегрузка.
{
    Console.WriteLine(d);
}

static void Function(string s, int i)  // 5-я перегрузка.
{
    Console.WriteLine(s + i);
}

static void Function(int i, string s)  // 6-я перегрузка.
{
    Console.WriteLine(i + s);
}

static void Function(ref int i, string s) // 7-я перегрузка.
{
    Console.WriteLine(i + s);
}

// Перегруженные методы не могут отличаться друг от друга только параметрами ref и out!
//static void function(out int i, string s)
//{
//    i = 5;
//    console.writeline(i + s);       // 9-я перегрузка.
//}

static void Main()
{

    Function();                  // 1-я перегрузка.
    Function("A");               // 2-я перегрузка.
    Function(1);                 // 3-я перегрузка.
    Function(3.14);              // 4-я перегрузка.
    Function("B ", 2);           // 5-я перегрузка.
    Function(3, " C");           // 6-я перегрузка.

    int variable = 5;
    Function(ref variable, "D"); // 7-я перегрузка.

    // Delay.
    Console.ReadKey();
}

1

Источник: видеоурок Александра Шевчука "МЕТОДЫ. РЕКУРСИЯ"

%D1%81%D1%82%D1%80%D0%B5%D0%BB%D0%BA%D0%B0%20%D0%B2%D0%BB%D0%B5%D0%B2%D0%BE%202 предыдущая статья | следующая статья %D1%81%D1%82%D1%80%D0%B5%D0%BB%D0%BA%D0%B0%20%D0%B2%D0%BF%D1%80%D0%B0%D0%B2%D0%BE%202