C# - Methods: A Beginner's Guide

Привет, начинающие программисты! Сегодня мы погрузимся в один из самых fundamental concepts в программировании на C#: Методы. Не волнуйтесь, если вы никогда не писали ни строчки кода - я буду вести вас через это путешествие шаг за шагом, как я делал это для countless студентов на протяжении многих лет моего преподавания. Так что возьмите杯у вашего любимого напитка и отправляйтесь в это захватывающее приключение вместе со мной!

C# -  Methods

Что такое методы?

Прежде чем мы перейдем к деталям, давайте поймем, что такое методы. Представьте методы как глаголы программирования - это действия, которые может выполнять ваша программа. Точно так же, как в реальной жизни у вас могут быть действия, такие как "сварить咖啡", "везти машину" или "написать письмо", в программировании у нас есть методы, которые выполняют определенные задачи.

Определение методов в C

Теперь давайте узнаем, как создавать эти насыщенные действиями звезды нашего кода!

Основная структура метода

Вот основная структура метода в C#:

AccessModifier ReturnType MethodName(ParameterList)
{
// Тело метода
// Код для выполнения
}

Не пугайтесь! Давайте разберем это:

  1. AccessModifier: Это определяет, кто может использовать метод (мы рассмотрим это подробнее позже).
  2. ReturnType: Какой результат возвращает этот метод? Это может быть число, текст или ничего (void).
  3. MethodName: Это то, как мы называем наш метод - делайте его описательным!
  4. ParameterList: Это входные данные, необходимые нашему методу для выполнения работы.

Пример

Давайте создадим простой метод, который здоровается с кем-то:

public static void SayHello(string name)
{
Console.WriteLine($"Привет, {name}! Добро пожаловать в мир C#!");
}

Рассмотрим этот пример:

  • public: Этот метод можно использовать везде в нашей программе.
  • static: Нам не нужно создавать объект для использования этого метода (не волнуйтесь, если это пока не имеет смысла).
  • void: Этот метод не возвращает никакого значения.
  • SayHello: Имя нашего метода.
  • (string name): Этот метод принимает один входной параметр - строку с именем 'name'.

Вызов методов в C

Создание метода - это здорово, но это как если бы вы испекли蛋糕 и никогда его не съели! Давайте узнаем, как использовать (или "вызывать") наши методы.

Основной вызов метода

Чтобы использовать наш метод SayHello, мы бы написали:

SayHello("Алиса");

Это выведет: "Привет, Алиса! Добро пожаловать в мир C#!"

Не правда ли, это мило? Мы можем поздороваться с кем угодно, просто изменив имя!

Методы с возвращаемыми значениями

Давайте создадим метод, который выполнит для нас некоторые математические действия:

public static int Add(int a, int b)
{
return a + b;
}

Чтобы использовать этот метод:

int result = Add(5, 3);
Console.WriteLine($"5 + 3 = {result}");

Это выведет: "5 + 3 = 8"

Рекурсивный вызов метода

Теперь давайте перейдем к чему-то более сложному - рекурсивным методам. Это методы, которые вызывают сами себя. Это как inception, но для кода!

Вот классический пример - вычисление факториала:

public static int Factorial(int n)
{
if (n == 0 || n == 1)
{
return 1;
}
else
{
return n * Factorial(n - 1);
}
}

Чтобы использовать это:

int result = Factorial(5);
Console.WriteLine($"Факториал 5 равен {result}");

Это выведет: "Факториал 5 равен 120"

Этот метод продолжает вызывать сам себя с меньшим числом, пока не дойдет до 1 или 0. Это как матрешка вычислений!

Передача параметров в метод

Мы уже видели примеры передачи параметров, но давайте углубимся немного.

Параметры по значению

Когда вы передаете тип значения (например, int, float и т.д.), C# создает копию этого значения. Изменения параметра внутри метода не влияют на исходное значение.

public static void DoubleValue(int x)
{
x = x * 2;
Console.WriteLine($"Внутри метода: {x}");
}

// Использование
int num = 5;
DoubleValue(num);
Console.WriteLine($"Снаружи метода: {num}");

Это выведет:

Внутри метода: 10
Снаружи метода: 5

Параметры по ссылке

Иногда мы хотим, чтобы изменения в методе влияли на исходное значение. Для этого мы используем ключевой слова ref:

public static void DoubleValueRef(ref int x)
{
x = x * 2;
Console.WriteLine($"Внутри метода: {x}");
}

// Использование
int num = 5;
DoubleValueRef(ref num);
Console.WriteLine($"Снаружи метода: {num}");

Это выведет:

Внутри метода: 10
Снаружи метода: 10

Переопределение методов

Одна的最后酷炫 вещь о методах - мы можем иметь несколько методов с одним и тем же именем, если они имеют разные списки параметров. Это называется переопределение методов.

public static int Add(int a, int b)
{
return a + b;
}

public static double Add(double a, double b)
{
return a + b;
}

// Использование
Console.WriteLine(Add(5, 3));        // Использует версию int
Console.WriteLine(Add(5.5, 3.2));    // Использует версию double

Обобщение типов методов

Вот быстрый справочный стол с различными типами методов, которые мы рассмотрели:

Тип метода Описание Пример
Метод без значения Выполняет действие, но не возвращает значение void SayHello(string name)
Метод с возвращаемым значением Выполняет действие и возвращает значение int Add(int a, int b)
Рекурсивный метод Вызывает сам себя для решения проблемы int Factorial(int n)
Переопределенный метод Множество методов с одним и тем же именем, но разными параметрами int Add(int a, int b) и double Add(double a, double b)

И вот оно! Вы только что сделали свои первые шаги в мир методов C#. Помните, что практика делает мастера, так что не бойтесь экспериментировать с этими концепциями. Создавайте свои собственные методы, комбинируйте и match параметры и смотрите, что вы можете создать. Before you know it, вы будете создавать сложные программы с легкостью. Удачи в программировании, будущие разработчики!

Credits: Image by storyset