Überprüfen Sie das innere Methode, ob ein optionales argument übergeben wurde

Wie kann ich überprüfen, ob ein optionales argument an eine Methode übergeben?

public void ExampleMethod(int required, string optionalstr = "default string",
    int optionalint = 10)
{

    if (optionalint was passed)
       return;
}

Ein weiterer Ansatz ist die Verwendung Nullable<T>.HasValue (MSDN-Definitionen, MSDN-Beispiele):

int default_optionalint = 0;

public void ExampleMethod(int required, int? optionalint,
                            string optionalstr = "default string")
{
    int _optionalint = optionalint ?? default_optionalint;
}
  • Was ich meistens tun, ist geben Sie einen Standardwert (fi -1 in deinem Fall). Wenn es einen anderen Wert als -1 übergeben wurde. Man könnte auch machen das int nullable (int?) und geben Sie den Standardwert null
  • Warum würden Sie wollen, dies zu überprüfen? Der Punkt, der ein Standard ist, dass Sie brauchen nicht zu wissen
  • aus der MSDN-Website:"Für ein Beispiel, wenn möglicherweise verwenden Sie eine nullable-Typ, betrachten, wie ein gewöhnliches Boolean-Variablen können zwei Werte haben: true und false. Es gibt keinen Wert, der bedeutet "undefiniert"."
  • Nullable-Typen und optionalen Parameter werden mot der gleichen Sache.
  • Wenn Sie wollen einfach nur, um Doppelarbeit zu vermeiden-Konstanten im Vergleich (wenn ("default string" == "default string"), und nicht wirklich überprüfen, ob der parameter übergeben wurde, Sie könnte verwenden Sie reflektion, um Standard zu vergleichen und dann das. Wohl ein bisschen over the top, aber dann sollten Sie in der Lage, ändern der Standard-parameter in der Signatur, ohne änderungen am code. stackoverflow.com/a/29156478/586754
InformationsquelleAutor Yariv | 2014-01-02
Schreibe einen Kommentar