estão lá PHP-como parâmetros opcionais em C #?
-
19-08-2019 - |
Pergunta
com PHP opcional parâmetros , se você não enviar um parâmetro que vai ser atribuído a um valor padrão:
public function getCustomer(id, optionalMessage = "(no message)") {
...
}
em C # geralmente eu resolver isso com C # método sobrecarga , por exemplo:.
public void GetCustomer(int id)
{
...
}
public void GetCustomer(int id, string optionalMessage)
{
...
}
mas eu perca a variante PHP pragmática, não C # também têm algum açucarado sintaxe para fazer parâmetros opcionais, assim , como no exemplo PHP?
Solução
Não em C # 3.0; esse recurso está na folha para C # 4.0 - veja aqui .
Por enquanto, você terá que usar diferentes sobrecargas:
public void Foo(int a) {Foo(a, "");}
public void Foo(int a, string b) {...}
A sintaxe proposto seria:
public void Foo(int a, string b = "") {...}
chamado com qualquer um:
Foo(123); // use default b
Foo(123, "abc"); // optional by position
Foo(123, b: "abc"); // optional by name
Outras dicas
Não, mas você pode simular-los até certo ponto, particularmente se os parâmetros opcionais são do mesmo tipo (ou você não se importa fazer algumas fundição).
Você pode usar o sinalizador params.
void paramsExample(object arg1, object arg2, params object[] argsRest)
Gostaria de salientar, porém, este perde a segurança de tipos, e não há nenhuma aplicação tipo de parâmetros ou ordem.