Est-ce que C# 4.0 autorise des arguments out
ou ref
optionnels?
Veuillez ajouter des explications sur votre code pour que tout le monde puisse comprendre facilement le concept
Est-ce que C# 4.0 autorise des arguments out
ou ref
optionnels?
Veuillez ajouter des explications sur votre code pour que tout le monde puisse comprendre facilement le concept
Bien que ce code puisse répondre à la question, fournir un contexte supplémentaire quant à pourquoi et/ou comment il répond à la question améliorerait significativement sa valeur à long terme. Veuillez éditer votre réponse pour ajouter quelques explications.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
2 votes
Eh bien, en C++, elles ont effectivement des paramètres "out" - vous pouvez avoir un argument d'adresse initialisé à null et il est assez courant d'écrire du code de bibliothèque qui ne remplira une structure de retour que si le pointeur n'est pas nul. C'est un idiome qui remonte à l'utilisation de null pour les "arguments optionnels" dans les API C.
61 votes
@Ed et tout le monde: pourquoi cela n'aurait aucun sens? Si une fonction "retourne" une valeur via "out", je ne veux pas être obligé de l'accepter. Maintenant je sais que pour des raisons techniques le compilateur doit toujours passer quelque chose en, mais il n'y a aucune raison pour laquelle il ne pourrait pas simplement créer un local factice pour moi derrière mon dos.
6 votes
Peut-être que cela n'a pas de sens du point de vue de la façon dont les choses sont mises en œuvre ou de ce qu'est réellement un paramètre facultatif. Mais comme l'a dit romkyns, ce serait vraiment bien d'avoir des "arguments de sortie facultatifs" - interprétez cela en anglais plutôt qu'en CLR et cela devient raisonnable et, à mon avis, souhaitable.
9 votes
Le C# ne le fait pas, mais VB.NET le fait.
6 votes
Cela a été battu à mort, cependant, je ne peux m'empêcher de mentionner mon soutien pour les arguments de sortie optionnels. Je suis devenu assez habitué aux arguments optionnels par référence en définissant une valeur par défaut
null
(je viens de PHP) et en testantnull
pour procéder à la population de l'argument (pour ceux qui connaissent, pensez àpreg_match()
). Quoi qu'il en soit, bien que je comprenne d'un point de vue technique que cela soit actuellement impossible, et que PHP et C# soient plutôt incomparables, ce serait quand même un "bel" outil à avoir à disposition.0 votes
Utilisez simplement une méthode surchargée qui ne prend pas le paramètre de sortie en question, si vous en avez quelques-uns que vous voulez optionnels, cela pourrait devenir compliqué.