Перейти до основного вмісту

Методи

У той час як змінні зберігають деякі значення, методи містять набір інструкцій, які виконують певні дії. По суті, метод — це іменований блок коду, який виконує певні дії.

Загальне визначення методів виглядає наступним чином:

[modifiers] type_return_value name_method ([parameters])
{
// method body
}

Модифікатори та параметри є необов'язковими.

Раніше ми вже використовували принаймні один метод, Console.WriteLine(), який виводить інформацію на консоль. Тепер давайте подивимося, як ми можемо створити власні методи.

Визначення методу

Давайте визначимо один метод:

void SayHello()
{
Console.WriteLine("Hello");
}

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

Перед ім'ям методу вказується тип даних, що повертається. У даному випадку це тип void, який вказує, що метод фактично нічого не повертає, а просто виконує певні дії.

Після імені методу в круглих дужках перелічуються параметри. Але в цьому випадку дужки порожні, що означає, що метод не приймає жодних параметрів.

Після списку параметрів у дужках йде блок коду, який представляє набір інструкцій, що виконує метод. У цьому випадку блок методу SayHello містить лише одну інструкцію, яка виводить рядок на консоль:

Console.WriteLine("Hello");

Але якщо ми запустимо цей проект, ми не побачимо рядка, який повинен вивести метод SayHello. Це тому, що після того, як метод визначений, його все ще потрібно викликати, щоб він виконав свою роботу.

Виклик методів

Щоб використовувати метод SayHello, нам потрібно його викликати. Для виклику методу ми вказуємо його ім'я, а потім у круглих дужках значення для його параметрів (якщо метод приймає параметри).

method_name(values_for_the_parameters_of_the_method);

Наприклад, виклик методу SayHello буде виглядати так:

SayHello();

Оскільки метод не приймає жодних параметрів, після імені методу йдуть порожні дужки.

Давайте об'єднаємо визначення та виклик методу:

void SayHello()
{
Console.WriteLine("Hello");
}

SayHello(); // Hello
SayHello(); // Hello

Вивід програми на консоль:

Hello
Hello

Перевага методів полягає в тому, що їх можна викликати багаторазово і в різних частинах програми. Наприклад, у наведеному вище прикладі метод SayHello викликається двічі.

У цьому випадку немає різниці, чи визначений метод спочатку, а потім викликається, чи навпаки. Наприклад, ми могли б написати так:

SayHello(); // Hello
SayHello(); // Hello

void SayHello()
{
Console.WriteLine("Hello");
}

Давайте визначимо та викличемо ще кілька методів:

void SayHelloRu()
{
Console.WriteLine("Hello");
}
void SayHelloEn()
{
Console.WriteLine("Hello");
}
void SayHelloFr()
{
Console.WriteLine("Salut");
}

string language = "en";

switch (language)
{
case "en":
SayHelloEn();
break;
case "ru":
SayHelloRu();
break;
case "fr":
SayHelloFr();
break;
}

Тут визначено три методи SayHelloRu(), SayHelloEn() та SayHelloFr(), які також мають тип void, не приймають параметрів і виводять деякий рядок на консоль. Умовно кажучи, вони виводять привітання певною мовою.

У конструкції switch перевіряється значення змінної language, яка умовно зберігає код мови, і залежно від її значення викликається певний метод. Таким чином, у цьому випадку на консолі буде виведено

Hello

Скорочена нотація методів

Якщо метод визначає лише одну інструкцію в тілі, ми можемо скоротити визначення методу. Наприклад, припустимо, у нас є метод:

void SayHello()
{
Console.WriteLine("Hello");
}

Ми можемо скоротити його наступним чином:

void SayHello() => Console.WriteLine("Hello");

Тобто оператор => розміщується після списку параметрів, за яким слідує інструкція для виконання.