Frage

mit PHP optionalen Parametern , wenn Sie es auf einen Standardwert zugewiesen wird keinen Parameter an:

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

in C # Ich löse dies in der Regel mit C # Methode Überlastung , z.

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

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

aber ich vermisse die pragmatische PHP-Variante, ist C # auch einige zuckerhaltige Syntax optionale Parameter hat auch zu tun , wie es in dem PHP-Beispiel?

War es hilfreich?

Lösung

Nicht in C # 3.0; Diese Funktion ist auf dem Blatt für C # 4.0 - siehe hier .

Für den Moment werden Sie verschiedene Überlastungen verwenden müssen:

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

Die vorgeschlagene Syntax wäre:

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

genannt mit einem:

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

Andere Tipps

Nein, aber Sie können sie in einem Ausmaß simulieren, insbesondere wenn Ihre optionale Parameter vom gleichen Typ sind (oder es Ihnen nichts ausmacht etwas Casting tun).

Sie können den params Flag verwenden.

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

ich aber darauf hinweisen soll, diese Sicherheit verliert geben, und es gibt keine Art Durchsetzung der Parameter oder Ordnung.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top