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#. Для соседних задач пригодятся эти разборы:
- C# с нуля: первый проект через dotnet new
- Как создать окно в C#: WinForms и WPF
- Как создать форму в си шарп: первый Windows Forms пример
- Как установить .NET SDK для C#