Est bon lorsque vous avez un TryNNN
de la fonction, et il est clair que le paramètre sera toujours ensemble, même si la fonction ne pas réussir. Cela vous permet de vous baser sur le fait que la variable locale vous déclarez sera mis plutôt que d'avoir à vérifier ultérieurement dans votre code par rapport à la valeur null. (Un commentaire ci-dessous indique que le paramètre peut être réglé en null
, de sorte que vous pouvez vérifier la documentation de la fonction que vous appelez pour être sûr si c'est le cas ou pas.) Elle rend le code un peu plus clair et plus facile à lire. Un autre cas est quand vous avez besoin de retourner des données et un statut sur l'état de la méthode comme:
public bool DoSomething(int arg1, out string result);
Dans ce cas, le retour peut indiquer si la fonction a réussi et le résultat est stocké dans le paramètre de sortie. Certes, cet exemple est inventée parce que vous pouvez les concevoir de façon à ce que la fonction renvoie simplement un string
, mais vous obtenez l'idée.
Un inconvénient est que vous devez déclarer une variable locale à utiliser:
string result;
if (DoSomething(5, out result))
UpdateWithResult(result);
Au lieu de:
UpdateWithResult(DoSomething(5));
Cependant, qui peut même ne pas être un désavantage, il dépend de la conception que vous allez pour. Dans le cas de DateTime, les deux moyens (Parse et TryParse) sont fournis.