Raus ist gut, wenn man eine TryNNN
Funktion und es ist klar, dass der Out-Parameter immer gesetzt wird, auch wenn die Funktion nicht erfolgreich ist. Auf diese Weise können Sie sich darauf verlassen, dass die deklarierte lokale Variable gesetzt wird, und müssen nicht später in Ihrem Code auf Null prüfen. (Ein Kommentar weiter unten weist darauf hin, dass der Parameter auch auf null
Sie sollten also die Dokumentation der Funktion, die Sie aufrufen, überprüfen, um sicherzugehen, dass dies der Fall ist oder nicht). Dadurch wird der Code ein wenig klarer und leichter zu lesen. Ein anderer Fall ist, wenn Sie einige Daten und einen Status über die Bedingung der Methode zurückgeben müssen:
public bool DoSomething(int arg1, out string result);
In diesem Fall kann die Rückgabe angeben, ob die Funktion erfolgreich war, und das Ergebnis wird im Parameter out gespeichert. Zugegeben, dieses Beispiel ist etwas konstruiert, denn man kann auch einen Weg finden, bei dem die Funktion einfach ein string
aber Sie verstehen, was ich meine.
Ein Nachteil ist, dass Sie eine lokale Variable deklarieren müssen, um sie zu verwenden:
string result;
if (DoSomething(5, out result))
UpdateWithResult(result);
Anstelle von:
UpdateWithResult(DoSomething(5));
Aber das ist vielleicht nicht einmal ein Nachteil, es kommt auf das Design an, das Sie anstreben. Im Fall von DateTime werden beide Möglichkeiten (Parse und TryParse) angeboten.