Wie übergeben Sie optionale Parameter an eine Methode in C #?
Angenommen, ich habe eine Methode namens Sendcommand
erstellt %Vor%Nun möchte ich diese Methode in der Hauptmethode wie
aufrufen %Vor%Wie erreiche ich das?
Vor .NET 4 müssen Sie die Methode überladen:
%Vor%Mit .NET 4 wird die Unterstützung für Standardparameter eingeführt, mit denen Sie alles in einer einzigen Zeile ausführen können.
%Vor%Übrigens, in der Frage, wie Sie es geschrieben haben, rufen Sie auch nicht die Methode in Ihrem ersten Beispiel auf:
%Vor%verwendet immer noch einen einzelnen Parameter, der die Verkettung der beiden Strings darstellt.
Die offensichtliche Antwort dafür sollte sein, tu es nicht so .
Sie sollten entweder eine separate Methode für jeden Befehl oder eine Befehls-Basisklasse und eine separate abgeleitete Klasse für jeden Befehl mit einer Execute-Methode haben.
Es ist ein schlechter Entwurf, eine Methode zu haben, die alle erdenklichen Befehle beherrscht.
Sie wollen wirklich nicht, dass ein Sendcommand()
alle möglichen Befehle behandelt.
Überprüfen Sie optionale C # 4.0-Parameter .
Stellen Sie außerdem sicher, dass Sie .NET 4 verwenden.
Wenn Sie ältere Versionen von .NET verwenden müssen.
Überladen der Methode ist die Lösung:
%Vor%Leute,
Ich habe mir diesen Thread angesehen und versucht, ein Problem zu lösen, das eigentlich nicht existiert, weil C # ein Paramsen-Array "gerade durchläuft"! Was ich nicht wusste, bis ich es gerade probiert habe.
Hier ist ein SSCCE:
%Vor%Produziert:
%Vor% Aber warum? ... Nun, weil (natürlich) die engste Parameterübereinstimmung mit der stark überladenen Console.WriteLine-Methode (string format, params object[] arg)
... nicht (string format, object arg)
ist, wie ich dachte.
Ich wusste irgendwie, dass das irgendwie möglich sein muss, weil (ich nehme an) Console.WriteLine tut es, ich habe irgendwie erwartet, dass es hart ist ... und denke daher, dass die Einfachheit und "Nettigkeit" dieses Tricks ist -der-Sprache ist bemerkenswert.
%Vor%Prost. Keith.
PS: Ich frage mich, ob sich VB.NET genauso verhält? Ich nehme an, es muss.
Sie können dies auf verschiedene Arten tun. Wenn Sie .NET 4.0 verwenden, können Sie optionale Parameter für die Methode verwenden:
%Vor%Andernfalls können Sie einfach eine andere Methode erstellen, die die Methode aufruft, die Sie bereits haben, aber die Standardparameter übergeben, die Sie optional haben möchten:
%Vor%Alle Antworten auf dieser Seite sind gültige Möglichkeiten, optionale Parameter zu akzeptieren. In vielen Fällen ist dies jedoch ein Zeichen dafür, dass Ihre Methode zu viel versucht.
In vielen Fällen sind Sie mit den folgenden unzweideutigen Methoden vielleicht besser dran ...
%Vor%Tags und Links .net optional-parameters c#-4.0