# Урок 7. Создание методов. Понятие сигнатуры метода

**URL:** <https://forum.itvdn.com/t/urok-7-sozdanie-metodov-ponyatie-signatury-metoda/3172>\
**Category:** Справочник C# Starter\
**Created:** [08.02.2019 15:24:35 UTC](https://forum.itvdn.com/t/urok-7-sozdanie-metodov-ponyatie-signatury-metoda/3172 "2019-02-08T15:24:35Z")\
**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:24:36 UTC](https://forum.itvdn.com/t/urok-7-sozdanie-metodov-ponyatie-signatury-metoda/3172/1 "2019-02-08T15:24:36Z")

</div>

Как и при создании переменных, при создании методов также нужно додерживаться определённых правил. Рассмотрим их на примере созданного ниже на рисунке метода:

![4](https://forum.itvdn.com/uploads/default/original/1X/ed1c321a0ff52a7d85abaa0ffc3b2a0d5f010721.jpeg)  
1  
Как видно из рисунка изначально мы должны указать тип возвращаемого значения метода, то есть тип того, что он будет возвращать. Тип возвращаемого значения ничем неограничен ( **но он должен быть указан!** ) и любой предопределённый или же пользовательский тип можно использовать при указании типа возвращаемого значения метода. Если тип возвращаемого значения не `void`, то в теле метода нужно с помощью ключевого слова `return` указать, что метод должен вернуть. Также данное ключевое слово обозначает конец работы метода.

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

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

В программировании есть также понятие сигнатуры методов. Изначально в C# (до версии 2.0) в сигнатуру входили такие части метода: возвращаемое значение метода + имя метода + информация о параметрах метода (их тип и количество), но на данный момент **под сигнатурой метода подразумевается его имя и информация о параметрах параметры** (тип возвращаемого значения исключили из сигнатуры). Поэтому если кто-то говорит, что методы имеют разные сигнатуры, то подразумевается, что методы могут иметь одинаковые возвращаемые значения, но при этом их имя и/или параметры отличаются.

В CIL, в сигнатуру может входить также и возвращаемое значение метода, так как в CIL, перегруженные методы могут отличаться типами возвращаемых значений, что недопустимо в C#.  
Принято различать сигнатуру вызова и сигнатуру реализации метода. Сигнатура вызова обычно составляется по синтаксической конструкции вызова метода с учётом имени данной функции, последовательности фактических типов аргументов в вызове и типе результата. В сигнатуре реализации обычно участвуют некоторые элементы из синтаксической конструкции объявления функции: спецификатор области видимости функции, её имя и последовательность формальных типов аргументов.

Определение метода задает имена и типы любых необходимых параметров. Когда код вызова вызывает метод, он передает в него конкретные значения, называемые аргументами, для каждого параметра. Аргументы должны быть совместимыми с типом параметра, но имя аргумента (если таковое имеется), используемое в коде вызова, не обязательно должно совпадать с именем параметра, определенного в методе.

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

Пример обращения к методу `DrawRectangle`:

```
static void Main(string[] args)
{
    DrawRectangle(17, 15); // выводит прямоугольник 17х15

    Console.ReadKey();
}

```

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

[![%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-rassmotrenie-upravlyayushhej-struktury-return/3171) | [следующая статья ![%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-7-semantika-metoda/3173)
