optional/null-Lage-OUT-parameter in C#
Habe ich eine Methode, die mehrere überschreibt. In einem der mehr erweitert überschreibt, will ich zurückgeben, einen parameter, aber nicht in mein einfacher überschreibt. Zum Beispiel:
public bool IsPossible(string param1, int param2)
public bool IsPossible(string param1, int param2, out bool param3)
So wie ich bin, derzeit, dies zu erreichen, ist etwa so:
public bool IsPossible(string param1, int param2) {
bool temp;
return IsPossible(param1, param2, out temp);
}
Gibt es einen besseren Weg, dies zu erreichen? Kann ich (oder sollte ich) verwenden Sie ein null-Lage-out-parameter?
InformationsquelleAutor der Frage Derek Hunziker | 2011-06-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dass sieht gut auf mich. Ein
out
nicht optional aus technischen Gründen (es muss auf eine gültige Instanz).InformationsquelleAutor der Antwort Lucero
Die Weise, die Sie getan haben, ist es nur gut. Sorry, keine silberne Kugel.
InformationsquelleAutor der Antwort agent-j
Ich persönlich denke, es ist gut "wie es ist". Ein weiterer Ansatz, obwohl, ist die Rückgabe einer zusammengesetzten Wert zurück (vielleicht eine unveränderliche Struktur mit 2 Eigenschaften); das vermeidet die Tatsache, dass einige Leute vermeiden
out
. Ich bin nicht einer jener Menschen :pWieder die Frage; in der Tat, out/ref, kann nicht optional sein.
Wollte man unnötig Phantasie könnte Ihnen das conposite return-Typ a-Konvertierung bool zu ermöglichen, implizite
if
tests.InformationsquelleAutor der Antwort Marc Gravell
OP:
Eine null-out-parameter nicht tun Sie viel gutes. Diese:
nicht
param3
optional. Es ändert sich die Semantik von dem, wasparam3
ist. Einbool?
(akaNullable<bool>
) verbreitert sich die Domäne derparam3
aus 2 Werten (true
undfalse
) 3, hinzufügen eines Dritten Wert (null
), in der Regel interpretiert als fehlend/unbekannt. Der Anrufer muss immer noch liefern alle drei Argumente.Überlastung
IsPossible()
durch die Bereitstellung einer überlastung-das "don' T care" - Szenario -- , verwirft die Bezugsgrösse ist die richtige Lösung.InformationsquelleAutor der Antwort Nicholas Carey
Ja, Nullable-Variablen sind groß. Würden Sie dann so etwas tun.
InformationsquelleAutor der Antwort Jethro