JavaRush /Курси /C# SELF /Вступ до функцій (методів) у C#

Вступ до функцій (методів) у C#

C# SELF
Рівень 8 , Лекція 2
Відкрита

1. Функції й методи в C#

Ви вже вивчили чимало команд у C#, тож можете писати доволі складні програми. 10, 20, 30 рядків коду у програмі — це ще не велика програма, чи не так?

А от програма на 100+ рядків — уже велика, і розібратися в її коді доволі складно. Чи можна спростити написання й читання програм із великою кількістю коду?

Так. У цьому допоможуть методи (функції).

Що ж таке метод? Якщо дуже спростити, то метод — це група команд з унікальною назвою. Інакше кажучи, ми об’єднуємо кілька команд в одну групу й даємо їй унікальне імʼя. І все — метод готовий.

Припустімо, у вас є код для малювання кота:

Console.WriteLine("  |\\__/,|   (`\\");
Console.WriteLine("  |o_o  |__ _) )");
Console.WriteLine("  (____/   (_/ ");
Код для малювання кота

Ось що він виводить:

  |\__/,|   (`\
  |o_o  |__ _) )
  (____/   (_/

Ви можете просто винести його в окремий метод і малювати скільки завгодно котів:

void WriteCat()
{
    Console.WriteLine("  |\\__/,|   (`\\");
    Console.WriteLine("  |o_o  |__ _) )");
    Console.WriteLine("  (____/   (_/ ");    
}

// Малюємо трьох котів
WriteCat();
WriteCat();
WriteCat();
Використання методу для повторного виведення кота

Коли програму запущено, щоразу під час виконання команди WriteCat() програма виконуватиме всі команди всередині методу WriteCat(). Ми просто створили нову команду (метод), об’єднавши в одну групу кілька команд.

Навіщо потрібні функції:

  • Ділять програму на частини, кожна з яких розв’язує своє завдання.
  • Спрощують повторне використання: написали один раз — використовуєте скільки завгодно.
  • Зменшують імовірність помилок: помилку у функції виправляєте в одному місці.
  • Надають коду «імена» для складних дій — читабельність помітно зростає.

Термінологія: функція, метод, процедура

У C# терміни функція і метод зазвичай означають те саме, але є невеликі нюанси.

  • Метод — функція, що належить класу або об’єкту (у C# майже все — методи).
  • Процедура — функція, що не повертає значення (void-метод).
  • Функція — у широкому сенсі будь-яка іменована частина програми, яку можна викликати.

Офіційно в C# усе це називають методами, але якщо випадково далі зустрінете «функцію» — не лякайтеся!

2. Синтаксис оголошення методу: розбір по поличках

Розберімо найпростішу функцію — класичну «Hello, World!», тільки винесемо її виведення в окремий метод:

using System;

class Program
{
    static void Main()
    {
        PrintHello();
    }

    static void PrintHello()	// Виводимо текст Hello, World!
    {
        Console.WriteLine("Hello, World!");
    }
}
Приклад оголошення та виклику методу

Розбір синтаксису:

Частина Приклад Опис
Модифікатор
static
Вказує, що метод належить класу (детальніше — далі)
Тип повертаємого значення
void
Тип значення, що повертається
Імʼя методу
PrintHello
Імʼя методу, за яким його викликають
Параметри
()
Параметри (порожньо — немає параметрів)
Тіло методу
{ ... }
Код, що виконується під час виклику методу

Аналогія:
Метод можна уявити як кавовий автомат: ви кладете гроші (аргументи), натискаєте кнопку (викликаєте метод), автомат варить каву (тіло методу) й видає результат (повертає значення) — або не видає, якщо це void-метод!

3. Як викликати методи

Виклик методу — це просто його імʼя та круглі дужки, і все:

PrintHello(); // Метод без параметрів

int sum = Add(2, 3); // Метод з параметрами та результатом

Важливо: викликати метод можна лише після його оголошення (або якщо воно розташоване «вище» у коді, або знаходиться в тому самому класі).

4. Методи з параметрами

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

static void Greet(string name)
{
    Console.WriteLine($"Привіт, {name}!");
}

// Використання:
Greet("Аліса");
Greet("Боб");
Метод із параметром

Параметри — це змінні, значення яких ви передаєте методу під час виклику.

Частина Приклад Опис
Тип параметра
string
Тип значення, яке приймає метод
Імʼя параметра
name
Імʼя, яке використовують у методі

Виклики:
Greet("Аліса");name отримує значення "Аліса".

Кілька параметрів

Можна оголосити кілька параметрів через кому:

static void PrintSum(int a, int b)
{
    Console.WriteLine($"Сума: {a + b}");
}

// Використання:
PrintSum(5, 7); // Сума: 12
Метод із кількома параметрами

5. Параметри-значення і параметри-посилання

Параметри функції — це звичайні змінні, до яких застосовують ті самі правила, що й до інших змінних.

Варто пам’ятати: коли ви передаєте у метод масив, ви передаєте посилання на масив, тож метод може змінити вміст масиву. Для простих типів (int, double) копіюється значення.

static void ZeroFirstGrade(int[] grades)
{
    grades[0] = 0; // Змінює оригінальний масив!
}

// Використання:
int[] a = {1, 2, 3, 4, 5};
ZeroFirstGrade(a);
Console.WriteLine(a[0]);	// Виведе 0
Передавання масиву за посиланням — метод змінює оригінальні дані

Фактично відбувається ось що:

static void ZeroFirstGrade(int[] grades)
{
    grades[0] = 0; // Змінює оригінальний масив!
}

// Використання:
int[] a = {1, 2, 3, 4, 5};

//ZeroFirstGrade(a);
int[] grades = a;
grades[0] = 0;

Console.WriteLine(a[0]);	// Виведе 0
Аналогія передавання масиву за посиланням
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ