Default Parameters, Overloading C#
Методом с параметрами по умолчанию.
internal class Program
{
static void ProfileFile(string name, int year, string company = "Не заполнено!")
{
Console.WriteLine($"Имя: {name} | Год: {year} | Компания: {company}");
}
static void Main(string[] args)
{
ProfileFile("Ruslan", 1993, "MEISTRU.LT");
}
}
код с методом с параметрами по умолчанию. Давай разберем код по шагам.
internal class Program
internal class Program— Это класс, в котором находится код.internalозначает, что этот класс доступен только внутри сборки.
static void ProfileFile(string name, int year, string company = "Не заполнено!")
- Это метод
ProfileFile, который принимает 3 параметра:name(строка) → Имя человека.year(целое число) → Год рождения.company(строка, по умолчанию "Не заполнено!") → Название компании (необязательный параметр).
- Если параметр
companyне передан, программа подставит"Не заполнено!".
Console.WriteLine($"Имя: {name} | Год: {year} | Компания: {company}");
Выводит информацию в удобном формате с помощью интерполяции строк ($"").
static void Main(string[] args)
Метод Main — точка входа в программу.
ProfileFile("Ruslan", 1993, "MEISTRU.LT");
Вызываем метод ProfileFile и передаем данные:
"Ruslan"→ Имя1993→ Год рождения"MEISTRU.LT"→ Компания
Вывод в консоли:
Что будет, если не передавать company?
Попробуем вызвать метод без третьего параметра:
Тогда программа автоматически подставит "Не заполнено!", и вывод будет таким:
Как можно улучшить?
1️⃣ Позволить пользователю вводить данные
Сделаем программу более гибкой — пусть пользователь сам вводит имя, год и компанию:
using System;
internal class Program
{
static void ProfileFile(string name, int year, string company = "Не заполнено!")
{
Console.WriteLine($"Имя: {name} | Год: {year} | Компания: {company}");
}
static void Main(string[] args)
{
Console.Write("Введите имя: ");
string name = Console.ReadLine();
Console.Write("Введите год рождения: ");
int year = Convert.ToInt32(Console.ReadLine());
Console.Write("Введите компанию (если нет — нажмите Enter): ");
string company = Console.ReadLine();
if (string.IsNullOrWhiteSpace(company))
{
ProfileFile(name, year); // Вызываем метод без третьего параметра
}
else
{
ProfileFile(name, year, company); // Передаем все 3 параметра
}
}
}
Теперь программа спросит данные у пользователя, и если компания не введена — подставит "Не заполнено!".
Этот метод называется метод с параметрами по умолчанию (Default Parameters Method).
Особенность метода
В методе ProfileFile у параметра company задано значение по умолчанию:
static void ProfileFile(string name, int year, string company = "Не заполнено!")
- Если при вызове метода указать 3 параметра, будет использовано переданное значение.
- Если не передавать 3-й параметр, будет использовано значение по умолчанию (
"Не заполнено!").
Как называется этот механизм?
- Метод с параметрами по умолчанию (Method with Default Parameters).
- Необязательные параметры в методе (Optional Parameters in Method).
- Перегрузка метода через параметры по умолчанию (Method Overloading with Default Parameters).
static void Greet(string name, string message = "Привет!")
{
Console.WriteLine($"{message}, {name}!");
}
static void Main()
{
Greet("Руслан"); // Вывод: Привет!, Руслан!
Greet("Аліна", "Добро пожаловать"); // Вывод: Добро пожаловать, Аліна!
}
Здесь у параметра message есть значение "Привет!" по умолчанию.
Перегрузка метода (Method Overloading) как альтернатива
Другой способ — создать несколько версий метода (без параметра и с параметром):
static void ProfileFile(string name, int year)
{
ProfileFile(name, year, "Не заполнено!");
}
static void ProfileFile(string name, int year, string company)
{
Console.WriteLine($"Имя: {name} | Год: {year} | Компания: {company}");
}
еперь если вызвать ProfileFile("Ruslan", 1993);, он автоматически вызовет версию метода с "Не заполнено!".
Вывод
✅ Твой метод называется "Метод с параметрами по умолчанию".
✅ Это удобно, когда некоторые параметры можно не передавать.
✅ Перегрузка метода — альтернатива, но default parameters удобнее.
default parameters — это параметр метода, который имеет значение по умолчанию.
Как работают default parameters в C#?
Если метод вызывается без указанного аргумента, используется значение по умолчанию.
Пример:
static void SayHello(string name = "Гость")
{
Console.WriteLine($"Привет, {name}!");
}
static void Main()
{
SayHello(); // Вывод: Привет, Гость!
SayHello("Валерия"); // Вывод: Привет, Валерия!
}
- Если
nameпередан, используется переданное значение. - Если
nameне передан, используется"Гость"(значение по умолчанию).
Как ты использовал default parameters?
В твоем коде параметр company имеет значение по умолчанию:
static void ProfileFile(string name, int year, string company = "Не заполнено!")
{
Console.WriteLine($"Имя: {name} | Год: {year} | Компания: {company}");
}
Дополнительный пример с разными типами данных
Можно использовать default parameters для чисел, строк и булевых значений:
static void PrintInfo(string name = "Гость", int age = 18, bool isMember = false)
{
Console.WriteLine($"Имя: {name}, Возраст: {age}, Член клуба: {isMember}");
}
static void Main()
{
PrintInfo(); // Имя: Гость, Возраст: 18, Член клуба: False
PrintInfo("Мария", 25); // Имя: Мария, Возраст: 25, Член клуба: False
PrintInfo("Иван", 30, true); // Имя: Иван, Возраст: 30, Член клуба: True
}
name = "Гость"age = 18isMember = false
Если параметры не переданы, подставляются значения по умолчанию.
Когда использовать default parameters?
✔ Если у параметра есть стандартное значение.
✔ Когда необязательно передавать все параметры.
✔ Чтобы избежать перегрузки методов (не создавать много одинаковых методов).
💡 Запомни: Default parameters удобны, но работают только в конце списка параметров:
❌ Ошибка:
static void Test(int a = 10, int b) // Нельзя, b не имеет значения по умолчанию
✅ Правильно:
static void Test(int a, int b = 10) // Можно, b идет последним
Теперь ты знаешь, что default parameters — это способ задавать параметры со значением по умолчанию! 🚀