410 votes

Différence entre les paramètres ref et out dans .NET

Quelle est la différence entre ref y out dans .NET ? Quelles sont les situations où l'un peut être plus utile que l'autre ? Quel serait un extrait de code où l'un peut être utilisé et pas l'autre ?

0 votes

A mon avis, ce n'est pas un duplicata de la question mentionnée parce que 1. il a précédé cette question 2. il y a des détails dans cette question qui ne sont pas liés au "duplicata".

1voto

bdukes Points 54833

out Les paramètres sont initialisés par la méthode appelée, ref sont initialisés avant l'appel de la méthode. Par conséquent, out sont utilisés lorsque vous avez simplement besoin d'obtenir une valeur de retour secondaire, ref les paramètres sont utilisés pour obtenir une valeur y retourner potentiellement une modification de cette valeur (secondairement à la valeur de retour principale).

1voto

BlackWasp Points 3080

Le mot-clé ref est utilisé pour transmettre des valeurs par référence. (Cela n'exclut pas que les valeurs transmises soient des types de valeur ou des types de référence). Les paramètres de sortie spécifiés avec le mot-clé out servent à renvoyer des valeurs à partir d'une méthode.

Une différence essentielle dans le code est que vous devez définir la valeur d'un paramètre de sortie au sein de la méthode. Ce n'est pas le cas pour les paramètres ref.

Pour plus de détails, consultez le site http://www.blackwasp.co.uk/CSharpMethodParameters.aspx

1voto

supercat Points 25534

Un site out est un paramètre ref avec un paramètre spécial Out() attribut ajouté. Si un paramètre d'une méthode C# est déclaré en tant que out le compilateur exigera que le paramètre soit écrit avant d'être lu et avant que la méthode puisse retourner. Si C# appelle une méthode dont le paramètre comprend un élément Out() le compilateur, pour décider s'il doit signaler des erreurs de type "variable indéfinie", fera comme si la variable était écrite immédiatement avant l'appel de la méthode. Notez que, comme les autres langages .net n'attachent pas la même signification à l'attribut Out() il est possible que l'appel d'une routine avec un attribut out n'affectera pas la variable en question. Si une variable est utilisée comme un out avant qu'elle ne soit définitivement affectée, le compilateur C# générera du code pour s'assurer qu'elle est effacée à un moment donné avant d'être utilisée, mais si une telle variable quitte et réintègre la portée, il n'y a aucune garantie qu'elle sera à nouveau effacée.

0voto

Joel Coehoorn Points 190579

Ref s'étouffera probablement avec null puisqu'il s'attend vraisemblablement à modifier un objet existant. out s'attend à null, puisqu'il retourne un nouvel objet.

0voto

Adam Hughes Points 2402

Le mot clé out fait en sorte que les arguments soient passés par référence. C'est comme le mot-clé ref, sauf que ref exige que la variable soit initialisée avant d'être transmise.

Source :

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