Именованные параметры в 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#.
На связи был Алексей Гулынин, оставляйте свои комментарии, увидимся в следующих статьях.