Как да използваме имена и незадължителни параметри в C #

Microsoft въведе поддръжка за посочени и незадължителни параметри в C # 4.0. Докато именен параметър се използва за задаване на аргумент, базиран на името на аргумента, а не на позицията, незадължителен параметър може да се използва за пропускане на един или повече параметри в сигнатурата на метода. Параметрите на метод могат да бъдат задължителни или незадължителни в зависимост от това дали трябва да предадете стойност на тези параметри, когато методът е извикан.

Трябва да се отбележи, че наименуваните и незадължителните параметри могат да се използват не само с методи, но и с индексатори и делегати. Тази статия разглежда тези две мощни функции на езика за програмиране C # и как можем да работим с тях.

За да работите с примерите за кодове, предоставени в тази статия, трябва да имате Visual Studio 2019 инсталиран във вашата система. Ако все още нямате копие, можете да изтеглите Visual Studio 2019 тук.

Създайте проект за конзолно приложение в Visual Studio

Първо, нека създадем проект за приложение на конзола .NET Core в Visual Studio. Ако приемем, че Visual Studio 2019 е инсталиран във вашата система, следвайте стъпките, описани по-долу, за да създадете нов проект за приложение на конзола .NET Core в Visual Studio.

  1. Стартирайте Visual Studio IDE.
  2. Кликнете върху „Създаване на нов проект“.
  3. В прозореца „Създаване на нов проект“ изберете „Console App (.NET Core)“ от показания списък с шаблони.
  4. Щракнете върху Напред.
  5. В показания след това прозорец „Конфигуриране на вашия нов проект“ посочете името и местоположението на новия проект.
  6. Щракнете върху Създаване.

Това ще създаде нов проект за приложение на конзола .NET Core в Visual Studio 2019. Ще използваме този проект за работа с имена и незадължителни параметри в следващите раздели на тази статия.

Използвайте имена на параметри в C #

Когато извиквате метод, конструктор, индексатор или делегат, трябва да предадете аргументи за необходимите параметри, но можете да пропуснете аргументи за параметрите, които са определени като незадължителни параметри.

Може често да се наложи да извикате метод, който има много параметри. И дори когато извиквате такъв метод само с необходимите параметри, понякога е изключително трудно да се разбере кой аргумент съответства на кой параметър. Ето къде на помощ идват посочените аргументи.

Именуваните аргументи в програмния език C # се използват за свързване на името на аргумента на метод със стойността му - т.е. стойността, предадена като аргумент при извикване на метода. Трябва да се отбележи, че когато се използва именен аргумент, аргументите се оценяват в същия ред, в който са били предадени.

Нека разгледаме един пример. Напишете следния метод с име Добавяне в класа на програмата на вашия нов проект за конзолно приложение.

публичен статичен int Добавяне (int x, int y, int z, int a, int b, int c)

{

   връщане x + y + z + a + b + c;

}

Да предположим, че извиквате метода Add, както е показано в кодовия фрагмент по-долу.

static void Main (низ [] аргументи)

{

    Добавете (5, 10);

}

Горният код няма да работи, защото има шест задължителни параметъра (нито един не е задължителен) в подписа на метода Добавяне, но сте предали само два аргумента. Ще ви бъде представена следната грешка.

Следователно, вие сте ограничени да предавате стойности на всеки от параметрите, за да задоволите повикването, както е показано в кодовия фрагмент, даден по-долу.

static void Main (низ [] аргументи)

{

   Добавете (5, 10, 8, 2, 3, 6);

}

Нещата се усложняват, когато имате комбинация от типове данни в параметрите на метод. За да илюстрираме това, нека модифицираме нашия метод Add, както е показано в следващия кодов фрагмент.

публичен статичен int Добавяне (int x, int y, int z, double a, double b, double c)

{

    връщане x + y + z + Convert.ToInt32 (a) + Convert.ToInt32 (b) + Convert.ToInt32 (c);

}

Помнянето на типовете данни на параметрите, както и тяхната позиция е тромаво. Решението за това е да се възползвате от наименуваните аргументи и да предадете стойности на метода, както е показано в кодовия фрагмент, даден по-долу.

static void Main (низ [] аргументи)

{

    Добавете (x: 5, y: 10, z: 8, a: 2.0, b: 3.0, c: 6.0);

}

Можете дори да промените реда на посочените аргументи, както е показано в кодовия фрагмент, даден по-долу.

static void Main (низ [] аргументи)

{

    Добавете (z: 8, x: 5, y: 10, c: 6, a: 2.0, b: 3.0);

}

Докато назовавате аргументите, можете да ги предавате в произволен ред и компилаторът няма да сигнализира за грешка - т.е. това е напълно валидно в C #.

Използвайте незадължителни параметри в C #

Незадължителните параметри в езика за програмиране C # ви позволяват да посочите аргументи в подпис на метод, който повикващият на метода е свободен да пропусне. С други думи, докато трябва да посочите стойности за необходимите параметри, може да изберете да не посочвате стойности за незадължителни параметри. В някои случаи един незадължителен параметър може да има и стойност по подразбиране, свързана с него.

Стойността по подразбиране на незадължителен параметър може да има всеки от трите вида стойности: постоянен израз, израз, който е под формата на тип стойност, или израз, който е под формата на default (v), където v е стойност Тип.

Методът Add, показан в следния кодов фрагмент, илюстрира как можете да зададете незадължителни аргументи на метод в C #.

публично статично int Добавяне (int x, int y = 0, int z = 0)

{

    връщане x + y + z;

}

И ето как можете да извикате метода Добавяне.

Добавете (10);

Тъй като два от параметрите в метода Add не са задължителни, можете да предадете една цялостна стойност на метода, когато го извиквате. Внимавайте да следвате правилния ред на дефиниране на параметри в даден метод. Изискваните параметри трябва да са на първо място, последвани от незадължителни параметри, ако има такива.

Имените и незадължителните параметри бяха въведени в езика за програмиране C #, за да се подобри оперативната съвместимост с COM API. Използването на имена на параметри може да подобри четливостта на изходния код. И можете да се възползвате от незадължителни параметри като заместител на използването на претоварени методи, когато дефиницията на метода е идентична.

Как да направите повече в C #:

  • Как да използвам плавни интерфейси и вериги на методи в C #
  • Как да тествате статични методи в C #
  • Как да рефакторирам Бог обекти в C #
  • Как да използвам ValueTask в C #
  • Как да използваме неизменност в C
  • Как да използвам const, readonly и static в C #
  • Как да използвам анотации на данни в C #
  • Как да работите с GUID в C # 8
  • Кога да се използва абстрактен клас срещу интерфейс в C #
  • Как да работя с AutoMapper в C #
  • Как да използвам ламбда изрази в C #
  • Как да работя с Action, Func и Predicate делегати в C #
  • Как да работя с делегати в C #
  • Как да внедрите прост регистратор в C #
  • Как да работя с атрибути в C #
  • Как да работя с log4net в C #
  • Как да приложим шаблона за проектиране на хранилището в C #
  • Как да работя с отражение в C #
  • Как да работя с файлова система за наблюдение в C #
  • Как да извършите мързелива инициализация в C #
  • Как да работите с MSMQ в C #
  • Как да работя с методи за разширение в C #
  • Как да използваме ламбда изрази в C #
  • Кога да се използва летливата ключова дума в C #
  • Как да използвам ключовата дума yield в C #
  • Как да приложим полиморфизъм в C #
  • Как да изградите свой собствен планировчик на задачи в C #
  • Как да работя с RabbitMQ в C #
  • Как да работите с кортеж в C #
  • Проучване на виртуални и абстрактни методи в C #
  • Как да използваме Dapper ORM в C #
  • Как да използвам шаблона за дизайн на мухата в C #