Необязательная спецификация некоторых необязательных параметров C # - PullRequest
5 голосов
/ 20 мая 2010

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

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

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

SomeMethod(_, false);

... что бы перевести на ...

SometMethod(false, false);

... во время компиляции. Это возможно?

Ответы [ 2 ]

10 голосов
/ 20 мая 2010

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

    SomeMethod(bar: false);
2 голосов
/ 20 мая 2010

С помощью 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);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...