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
Аналогия передачи массива по ссылке
2
Задача
C# SELF, 8 уровень, 2 лекция
Недоступна
Создание метода без параметров
Создание метода без параметров
2
Задача
C# SELF, 8 уровень, 2 лекция
Недоступна
Создание метода с параметром
Создание метода с параметром
Комментарии
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ