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

**URL:** <https://forum.itvdn.com/t/urok-8-peregruzka-metodov/3176>\
**Category:** Справочник C# Starter\
**Created:** [08.02.2019 15:56:34 UTC](https://forum.itvdn.com/t/urok-8-peregruzka-metodov/3176 "2019-02-08T15:56:34Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![admin.guide](https://forum.itvdn.com/letter_avatar_proxy/v4/letter/a/6a8cbe/32.png) [@admin.guide](https://forum.itvdn.com/u/admin.guide)\
**Post date:** [08.02.2019 15:56:34 UTC](https://forum.itvdn.com/t/urok-8-peregruzka-metodov/3176/1 "2019-02-08T15:56:34Z")

</div>

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

Наборы параметров перегруженных методов могут отличаться порядком следования, количеством, типом. Перегруженные метода могут отличаться наличием `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](https://forum.itvdn.com/uploads/default/original/1X/21cb693144ae753cc3ab3cf2e492230118f68909.jpeg)

Источник: видеоурок Александра Шевчука ["МЕТОДЫ. РЕКУРСИЯ"](https://itvdn.com/ru/video/csharp-starter/recursion)

[![%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](https://forum.itvdn.com/uploads/default/original/1X/b38ed3846d27463ae91c4449efd4de36bbb0b1b1.jpeg) предыдущая статья](https://forum.itvdn.com/t/urok-7-primer-pravilnogo-mnozhestvennogo-vozvrata-iz-metoda/3167) | [следующая статья ![%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](https://forum.itvdn.com/uploads/default/original/1X/6188b82e0808cd73a15f53f8e652f939106184bc.jpeg)](https://forum.itvdn.com/t/urok-8-argumenty-parametry-metodov/3183)
