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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top