C#

Методы C#: как создать, вызвать и передать параметры

Метод в C# — это именованный блок кода, который можно вызвать по имени. Метод помогает не копировать один и тот же код несколько раз. Например, расчет скидки, проверку пароля или вывод приветствия удобно вынести в отдельный метод

Простой метод:

static void SayHello()
{
    Console.WriteLine("Привет из метода");
}

Вызов метода:

SayHello();

Полный пример

static void SayHello()
{
    Console.WriteLine("Привет из метода");
}

SayHello();
SayHello();

Вывод:

Привет из метода
Привет из метода

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

Метод с параметром

Параметр — это значение, которое метод получает при вызове:

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

SayHello("Анна");
SayHello("Илья");

Вывод:

Привет, Анна!
Привет, Илья!

string name внутри скобок означает: метод ждет текстовое значение

Метод, который возвращает результат

Если метод должен не просто печатать, а вернуть значение, укажите тип результата и используйте return:

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

int result = Sum(10, 5);
Console.WriteLine(result);

Результат:

15

Здесь int перед названием метода означает: метод возвращает целое число

void и return: в чем разница

void означает, что метод ничего не возвращает:

static void PrintTotal(int total)
{
    Console.WriteLine($"Итого: {total}");
}

Метод с результатом возвращает значение:

static double AddTax(double price)
{
    return price * 1.2;
}

Если вам нужно получить результат и использовать его дальше, возвращайте значение через return

Частые ошибки

Забыть вызвать метод

Так метод только объявлен:

static void Start()
{
    Console.WriteLine("Старт");
}

Чтобы он выполнился, нужен вызов:

Start();

Перепутать тип возвращаемого значения

Так нельзя:

static int GetName()
{
    return "Dinar";
}

Метод обещал вернуть int, но возвращает string

Делать метод слишком большим

Если метод занимает много экранов и делает все сразу, его трудно проверять. Хороший метод обычно решает одну понятную задачу

Метод внутри класса и top-level statements

В новых шаблонах C# часто используют top-level statements: код можно писать сразу в файле Program.cs, без явного класса Program. Поэтому пример с методом может выглядеть так:

static double AddTax(double price)
{
    return price * 1.2;
}

double result = AddTax(1000);
Console.WriteLine(result);

В старом стиле тот же код будет внутри класса:

class Program
{
    static double AddTax(double price)
    {
        return price * 1.2;
    }

    static void Main()
    {
        double result = AddTax(1000);
        Console.WriteLine(result);
    }
}

Оба варианта нормальные. Если вы учитесь по современному шаблону .NET, не пугайтесь, что в файле нет Main: компилятор создает его за вас

Практический сценарий: проверка скидки

Методы особенно полезны, когда одну логику нужно вызвать для разных данных:

static bool HasDiscount(decimal orderTotal)
{
    return orderTotal >= 5000;
}

Console.WriteLine(HasDiscount(3000)); // False
Console.WriteLine(HasDiscount(7000)); // True

Теперь правило скидки живет в одном месте. Если порог изменится с 5000 на 8000, вы поменяете одну строку, а не десять разных проверок по проекту

Мини-задание

Создайте метод CalculateDiscount, который принимает цену и процент скидки, а возвращает итоговую цену:

static double CalculateDiscount(double price, double percent)
{
    return price - price * percent / 100;
}

double finalPrice = CalculateDiscount(1000, 15);
Console.WriteLine(finalPrice);

Ожидаемый вывод:

850

Измените 1000 и 15, чтобы проверить другой заказ

Что почитать дальше по C#

Если нужен общий маршрут по теме, откройте рубрику C#. Для соседних задач пригодятся эти разборы:

Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные

Настройки cookie

0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x