Pregunta

con parámetros opcionales de PHP , si no envía un parámetro, se le asignará un valor predeterminado:

public function getCustomer(id, optionalMessage = "(no message)") {
    ...
}

en C # generalmente resuelvo esto con sobrecarga del método C # , por ejemplo:

public void GetCustomer(int id) 
{
    ...
}

public void GetCustomer(int id, string optionalMessage)
{
    ...
}

pero extraño la variante pragmática de PHP, ¿C # también tiene alguna sintaxis azucarada para hacer parámetros opcionales también , como en el ejemplo de PHP?

¿Fue útil?

Solución

No en C # 3.0; esta función se encuentra en la hoja de C # 4.0; consulte aquí .

Por ahora, tendrá que usar diferentes sobrecargas:

public void Foo(int a) {Foo(a, "");}
public void Foo(int a, string b) {...}

La sintaxis propuesta sería:

public void Foo(int a, string b = "") {...}

llamado con cualquiera de:

Foo(123); // use default b
Foo(123, "abc"); // optional by position
Foo(123, b: "abc"); // optional  by name

Otros consejos

No, pero puede simularlos hasta cierto punto, especialmente si sus parámetros opcionales son del mismo tipo (o si no le importa hacer un poco de conversión).

Puede usar la bandera de parámetros.

void paramsExample(object arg1, object arg2, params object[] argsRest) 

Debo señalar, sin embargo, esto pierde seguridad de tipo y no hay cumplimiento de tipo de los parámetros u orden.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top