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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top