ci sono parametri opzionali simili a PHP in C #?
-
19-08-2019 - |
Domanda
con Parametri opzionali PHP , se non invii un parametro verrà assegnato a un valore predefinito:
public function getCustomer(id, optionalMessage = "(no message)") {
...
}
in C # In genere lo risolvo con sovraccarico del metodo C # , ad esempio:
public void GetCustomer(int id)
{
...
}
public void GetCustomer(int id, string optionalMessage)
{
...
}
ma mi manca la variante pragmatica di PHP, C # ha anche qualche sintassi zuccherina per fare anche parametri facoltativi , come nell'esempio di PHP?
Soluzione
Non in C # 3.0; questa funzione è sul foglio per C # 4.0 - vedi qui .
Per ora, dovrai usare diversi sovraccarichi:
public void Foo(int a) {Foo(a, "");}
public void Foo(int a, string b) {...}
La sintassi proposta sarebbe:
public void Foo(int a, string b = "") {...}
chiamato con uno qualsiasi di:
Foo(123); // use default b
Foo(123, "abc"); // optional by position
Foo(123, b: "abc"); // optional by name
Altri suggerimenti
No, ma puoi simularli in una certa misura, in particolare se i tuoi parametri opzionali sono dello stesso tipo (o non ti dispiace fare un casting).
Puoi usare il flag params.
void paramsExample(object arg1, object arg2, params object[] argsRest)
Vorrei sottolineare, tuttavia, questo perde la sicurezza del tipo e non esiste un'applicazione del tipo dei parametri o dell'ordine.