242 votes

C# 4.0 arguments optionnels out/ref

Est-ce que C# 4.0 autorise des arguments out ou ref optionnels?

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.

-4voto

user6469927 Points 1
void foo(réf int? n)
{
    return null;
}

4 votes

Veuillez ajouter des explications sur votre code pour que tout le monde puisse comprendre facilement le concept

2 votes

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.

4 votes

Cela entraînera une erreur de syntaxe car la méthode a un type de retour void. De plus, ne répond pas à la question.

Prograide.com

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.

Powered by:

X