Дополнительная Спецификация некоторых Дополнительных Параметров C#

Предположим, что у Вас есть метод со следующей подписью:

public void SomeMethod(bool foo = false, bool bar = true) { /* ... */ }

При вызове этого метода, там способ указать значение для bar и нет foo? Это посмотрело бы что-то как...

SomeMethod(_, false);

... который перевел бы в...

SometMethod(false, false);

... во время компиляции. Действительно ли это возможно?

5
задан Ian Mercer 20 May 2010 в 18:15
поделиться

2 ответа

Посмотрите на именованные параметры.

    SomeMethod(bar: false);
10
ответ дан 13 December 2019 в 05:31
поделиться

В C#4 вы можете задавать параметры функциям двумя способами:

  1. Позиционный: То, что всегда поддерживалось
  2. Именованные: Вы можете указать имя каждого параметра и расположить их в любом порядке

С позиционными параметрами нет возможности указать только 2-й параметр по умолчанию. С именованными параметрами такая возможность есть. Просто опустите первый именованный параметр.

Вот пример:

    static void test(bool f1 = false, bool f2 = false)
    {
        //f1 == false and f2 == true
    }

    static void Main(string[] args)
    {
        test(f2: true);
    }
2
ответ дан 13 December 2019 в 05:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: