Метод — это именованный блок кода. Вы можете запустить этот блок, вызвав имя метода в другой части программы, передавать в метод данные и принимать возвращаемые им результаты.
Структура метода
Как уже сказано ранее, метод является функцией-членом класса.
По сути метод — это функция. Термин «метод» используется, когда функция принадлежит классу. В языке C все подобные конструкции просто называются функциями.
Метод состоит из двух основных частей: заголовок метода (объявление метода) и тело метода.
- Заголовок метода: Определяет все характеристики метода и содержит следующую информацию:
- Есть ли у метода возвращаемое значение; если есть — указывается тип возвращаемого значения
- Имя метода
- Типы передаваемых и возвращаемых данных, а также правила их обработки
- Тело метода: Состоит из последовательности выполняемых инструкций. Выполнение начинается с первой строки тела и продолжается по порядку.
Рассмотрим пример
string Introduce(string name,int age)
{
string words = $"hello my name is {name},i'm {age} years old";
Console.WriteLine(words);
return words;
}Code language: C# (cs)
Заголовок метода: string Introduce(string name,int age)
string: Тип возвращаемого значения — строкаIntroduce: Имя метода(string name,int age): Список параметров. Эти два элемента являются переменными, которые принимают имя и возраст извне и могут использоваться внутри тела метода.

Как вызвать этот метод?
Данный метод находится в классе Program вместе с методом Main. Однако Main — статический метод. Статические методы не могут напрямую вызывать нестатические методы. Чтобы вызвать Introduce, сначала нужно создать экземпляр класса Program и обращаться к методу через этот экземпляр.
class Program
{
static void Main()
{
Program program = new Program();
program.Introduce("John", 30);
}
string Introduce(string name,int age)
{
string words = $"hello my name is {name},i'm {age} years old";
Console.WriteLine(words);
return words;
}
}Code language: C# (cs)
Прямой вызов, как показано ниже, вызовет ошибку компиляции

Правильный подход: внутри функции Main создать экземпляр Program с помощью new, а затем вызвать Introduce через этот экземпляр
Program program = new Program();//√
program.Introduce("John", 30);Code language: C# (cs)
Тело метода
Тело метода может содержать ноль или несколько выполняемых инструкций.
Тело метода — это блок кода (набор инструкций в фигурных скобках). Внутри блока кода можно размещать следующие элементы:
- Локальные переменные
- Операторы управления потоком (циклы, ветвления и т.д.)
- Вызовы других методов
- Вложенные подблоки кода
- Локальные функции (подметоды, определенные внутри метода) [рассмотрим позже]
class Program
{
static void Main()
{
int age = 3; // Локальная переменная, начальное значение 3
while (age > 0) // Оператор управления потоком
{
--age;
Introduce("Tom", age); // Вызов метода
}
{
//Вложенный подблок кода
}
}
static string Introduce(string name,int age)
{
string words = $"hello my name is {name},i'm {age} years old";
Console.WriteLine(words);
return words;
}
}
Code language: JavaScript (javascript)
В примере выше перед функцией Introduce добавлено ключевое слово static, благодаря чему она становится статической. Теперь её можно вызывать прямо из Main без создания экземпляра.
Локальные переменные (Local Variables)
Как и рассмотренные ранее поля экземпляра, локальные переменные хранят данные. Поля экземпляра обычно сохраняют состояние объекта, а локальные переменные предназначены только для временных расчетов.
После завершения работы метода, где объявлены локальные переменные, они выгружаются из стека. Переменные значимых типов уничтожаются сразу; переменные ссылочных типов будут очищены сборщиком мусора в дальнейшем.
1. Синтаксис объявления локальных переменных
Тип ИмяПеременной = НачальноеЗначение;
ИмяПеременной: Пользовательский идентификатор= НачальноеЗначение: Необязательный инициализатор для присвоения начального значения
2. Основные правила локальных переменных
- Время жизни и область видимости: Существуют только внутри блока, где объявлены, и во всех вложенных подблоках
- Переменная создается и становится доступной на строке объявления
- После завершения выполнения блока переменная утрачивает актуальность и уничтожается
- Свободное место объявления: Можно объявлять в любом месте тела метода, но объявление должно предшествовать использованию
static void Main()
{
int age = 3; //Локальная переменная
Phone p = new Phone(); //Локальная переменная пользовательского типа
{
int one = 1; //Локальная переменная подблока
bool two = false;
}
double d = 0;
}Code language: JavaScript (javascript)

Поля экземпляра против Локальных переменных
| Поле экземпляра | Локальная переменная | |
|---|---|---|
| Время жизни | Создается при создании объекта; уничтожается когда объект недоступен | Активируется на строке объявления; уничтожается после выполнения родительского блока |
| Стандартная инициализация | Компилятор автоматически присваивает стандартное значение для данного типа | Автоматической инициализации нет; использование без присваивания вызывает ошибку компиляции |
| Хранение в памяти | Хранится в куче (Heap), независимо от значимого или ссылочного типа | Значимый тип: стек (Stack); ссылочный тип: ссылка в стеке, данные объекта в куче |
Метод (Method)