Wie können Sie optionale Parameter in C# verwenden?
Anmerkung: Diese Frage wurde zu einer Zeit gestellt, als C# noch keine optionalen Parameter unterstützte (d.h. vor C# 4).
Wir'bauen eine Web-API, die's programmatisch aus einer C#-Klasse generiert. Die Klasse hat die Methode GetFooBar(int a, int b)
und die API hat eine Methode GetFooBar
, die Abfrageparameter wie &a=foo &b=bar
annimmt.
Die Klassen müssen optionale Parameter unterstützen, was in der Sprache C# nicht unterstützt wird. Was ist der beste Ansatz?
455
3
In C# würde ich normalerweise mehrere Formen der Methode verwenden:
UPDATE: Das oben genannte war die Art und Weise, wie ich Standardwerte mit C# 2.0 verwendet habe. Die Projekte, an denen ich jetzt arbeite, verwenden C# 4.0, das nun direkt optionale Parameter unterstützt. Hier ist ein Beispiel, das ich gerade in meinem eigenen Code verwendet habe:
Von dieser Website:
http://www.tek-tips.com/viewthread.cfm?qid=1500861&page=1
C# erlaubt die Verwendung des [Optional]-Attributs (aus VB, jedoch nicht funktional in C#). Sie können also eine Methode wie diese haben:
In unserem API-Wrapper erkennen wir optionale Parameter (ParameterInfo p.IsOptional) und setzen einen Standardwert. Das Ziel ist es, Parameter als optional zu kennzeichnen, ohne auf Tricks wie "optional" im Parameternamen zurückgreifen zu müssen.
Sie könnten eine Methodenüberladung verwenden...
Es hängt von den Methodensignaturen ab. In dem von mir angeführten Beispiel fehlt die Methode "int b", da sie die gleiche Signatur wie die Methode "int a" haben würde.
Sie könnten Nullable Typen verwenden...
"pre"; GetFooBar(int? a, int? b)
Sie könnten dann mit a.HasValue prüfen, ob ein Parameter gesetzt wurde.
Eine andere Möglichkeit wäre die Verwendung eines 'params' Parameters.
Wenn Sie mit benannten Parametern gehen wollten, müssten Sie einen Typ erstellen, um sie zu behandeln, obwohl ich denke, es gibt bereits so etwas für Webanwendungen.