Предположим, что у Вас есть метод со следующей подписью:
public void SomeMethod(bool foo = false, bool bar = true) { /* ... */ }
При вызове этого метода, там способ указать значение для bar
и нет foo
? Это посмотрело бы что-то как...
SomeMethod(_, false);
... который перевел бы в...
SometMethod(false, false);
... во время компиляции. Действительно ли это возможно?
Посмотрите на именованные параметры.
SomeMethod(bar: false);
В C#4 вы можете задавать параметры функциям двумя способами:
С позиционными параметрами нет возможности указать только 2-й параметр по умолчанию. С именованными параметрами такая возможность есть. Просто опустите первый именованный параметр.
Вот пример:
static void test(bool f1 = false, bool f2 = false)
{
//f1 == false and f2 == true
}
static void Main(string[] args)
{
test(f2: true);
}