Несколько дополнительных параметров: можно использовать другой порядок? - PullRequest
0 голосов
/ 04 июля 2019

У меня есть метод с 4 необязательными параметрами, и я хотел бы использовать любую возможную комбинацию в моем коде, включая только первую и последнюю.

Вот пример:

public void Method(int a = 5, string b = "foo", bool c = true)
{
    ...
}

И я хотел бы сделать это:

Method(6, false);

Однако, когда я пытаюсь использовать только эти два параметра, я получаю сообщение об ошибке, что не могу преобразовать строку в bool. Есть ли способ, как решить эту проблему без перегрузки? Я не хочу использовать перегрузку, потому что мне нужно создать около 15 методов со всеми возможными комбинациями.

РЕДАКТИРОВАТЬ: И я не хочу использовать

Method(a: 6, c: false);

потому что я нахожу это немного раздражающим.

Ответы [ 2 ]

2 голосов
/ 04 июля 2019

Да, вы можете!

Вам просто нужно добавить имена параметров в свои аргументы, чтобы указать, какому из них вы передаете аргументы:

Method(a: 6, c: false);
0 голосов
/ 04 июля 2019

Вы также можете создать 2 разные функции с одинаковым именем для разных порядков параметров.

Функция первая:

public void Method(int a, string b, bool c)
{
    ...
}

Функция две (только с 2 параметрами):

public void Method(int a, bool c)
{
    ...
}

Ваша IDE компилирует ваш код и будет знать, какую функцию использовать

...