Как пропустить необязательные параметры в C #? - PullRequest
37 голосов
/ 08 января 2011

Пример:

public int foo(int x, int optionalY = 1, int optionalZ = 2) { ... }

Я бы хотел назвать это так:

int returnVal = foo(5,,8); 

Другими словами, я хочу предоставить x и z, но я хочу использовать значение по умолчанию для Y, optionalY = 1.

Visual Studio не нравится ,,

Пожалуйста, помогите.

Ответы [ 4 ]

61 голосов
/ 08 января 2011

Если это C # 4.0, вы можете использовать именованные аргументы функцию:

foo(x: 5, optionalZ: 8); 

См. этот блог для получения дополнительной информации.

16 голосов
/ 08 января 2011

В C # 4.0 вы можете назвать аргументы, встречающиеся после пропущенных значений по умолчанию, следующим образом:

int returnVal = foo(5, optionalZ: 8);

Это называется именованными аргументами .Несколько других языков предоставляют эту функцию, и они обычно используют вместо этого синтаксис foo(5, optionalZ=8), который полезно знать при чтении кода на других языках.

1 голос
/ 13 мая 2015

Другим динамическим способом предоставления параметров по вашему выбору является реализация ваших методов в классе и предоставление именованных параметров конструктору классов.Почему бы даже не добавить вызовы к методам в той же строке кода, как указано здесь: Как определить именованные параметры C #

var p = new PersonInfo {Name = "Peter", Age= 15} .BuildPerson ();

0 голосов
/ 25 июня 2018

Это поздний ответ, но для людей, которые в него входят.Можно также использовать перегрузки, которые используют то же имя, что и метод / функция, но с другим набором параметров.

ea

int SummAll (int a=0, int b=1, int c=2)
{return a+b+c;}

int SumAll (int a=0;int c=10) //skipping B 
{return a+c; }

Этот шаблон соответствует тому, как с intellicense мы можем просматриватьчерез вариации функций.

...