Именованные параметры в C#

Именованные параметры в C#

Всем доброго времени суток, на связи Алексей Гулынин. В прошлой статье мы узнали про класс StringBuilder в C#. В данной статье я бы хотел поговорить про именованные параметры в C#. Когда мы создаём какой-нибудь метод в C#, то мы часто указываем список формальных параметров в заголовке метода, т.е. можно создать метод без параметров, а можно и с параметрами. Давайте создадим метод, который приветствует пользователя и в качестве параметра будем передавать имя пользователя:

static void Main(string[] args)
{
	Greetings("Alex");
	Console.ReadLine();
}
static void Greetings(string name)
{
	Console.WriteLine("Hello, {0}", name);
}

Если запустить данный метод, то выйдет сообщение "Hello, Alex". А что будет, если мы не хотим указывать имя, а хотим, чтобы выводилось какое-нибудь значение по умолчанию. Например, при входе в систему, будем здороваться с пользователем по имени, а в противном случае (если пользователь не зарегистрирован) будем выводить "Hello, Unknown". Для этого используются параметры по умолчанию. Модифицируем наш метод:

static void Main(string[] args)
{
	Greetings("Alex");
	Greetings();
	Console.ReadLine();
}
static void Greetings(string name = "Unknown")
{
	Console.WriteLine("Hello, {0}", name);
}

В первом случае мы передали параметр методу, поэтому выйдет сообщение "Hello, Alex". Во втором случае мы значение методу Greetings() не передавали, поэтому использовалось значение по умолчанию, и вышло сообщение "Hello, Unknown". Параметров по умолчанию в методе может быть сколько угодно, их также можно чередовать с параметрами, у которых нет значения по умолчанию. Давайте рассмотрим пример, в котором будет 2 значения по умолчанию. Будем передавать имя и возраст:

static void Main(string[] args)
{
	Greetings("Alex", 25);
	Greetings();
	Console.ReadLine();
}
static void Greetings(string name = "Unknown", int age = 20)
{
	Console.WriteLine("Hello, {0}. Your age: {1}", name, age);
}

В первом случае выйдет сообщение "Hello, Alex. Your age: 25", во втором случае выйдет значение с параметрами по умолчанию: "Hello, Unknown. Your age: 20". Также можно для одного параметра указать параметр, а для другого оставить значение по умолчанию. К примеру написать Greetings("Alex"). В данном случае выйдет сообщение "Hello, Alex. Your age: 20".

Тонкость в передачи параметров методу заключается в порядке передачи этих методов, т.е. нельзя написать вот так: Greetings(25, "Alex").

Компилятор поругается и выдаст ошибку. А что если мы хотим передать только возраст, а имя использовать по умолчанию. Вот так вот тоже писать нельзя: Greetings(20), Greetings(, 20), т.е. нельзя пропускать параметр.

На данном этапе мы подошли к использованию именованных параметров в C#. Для того, чтобы иметь возможность передать только возраст, оставив имя по умолчанию, нужно написать так Greetings(age: 30):

static void Main(string[] args)
{
	Greetings(age: 30);
	Console.ReadLine();
}
static void Greetings(string name = "Unknown", int age = 20)
{
	Console.WriteLine("Hello, {0}. Your age: {1}", name, age);
}

Если использовать именованные параметры, то параметры можно передавать в любом порядке. Тут можно написать вот так: Greetings(age: 30, name: "Semen").

В данной статье вы узнали про именованные параметры в C#.

На связи был Алексей Гулынин, оставляйте свои комментарии, увидимся в следующих статьях.


Комментарии:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *