Recommandé, 2024

Choix De L'Éditeur

Différence entre ref et out en C #

«Ref» et «Out» sont les modificateurs de paramètres utilisés en C #. En utilisant ref et out, vous pouvez passer n'importe quel type de valeur par sa référence à n'importe quelle méthode. La raison de passer un type de valeur par sa référence introduit la principale différence entre le mot clé ref et le mot clé out. Le mot clé ref permet à la méthode appelée de modifier le contenu de l'argument qui lui est transmis avec le mot clé ref. Le mot clé out permet à la méthode appelée de renvoyer plusieurs valeurs lors d'un même appel. Etudions la différence entre ref et out avec un tableau de comparaison.

Tableau de comparaison

Base de comparaisonRefEn dehors
De baseIl permet la modification de la valeur de l'argument avec le mot-clé ref.Il permet à une méthode de renvoyer ces valeurs précédées d'un mot clé out.
InitialisationLe paramètre ref doit être initialisé avant l'appel de la méthode.Le paramètre out doit être initialisé dans la méthode appelée avant sa fin.
DéclarationLe paramètre à modifier par une méthode est déclaré en tant que ref, déclaration de méthode et appel de méthode.Le paramètre à renvoyer doit être déclaré en tant que référence de déclaration de méthode et d'appel de méthode.

Définition de référence

Le “ref” est un modificateur de paramètre utilisé lorsqu'il est nécessaire d'appeler une méthode avec call-by-reference. Lorsque nous voulons que les modifications apportées aux arguments dans une méthode appelée doivent refléter la valeur d'origine de cette variable, le modificateur de paramètre ref est utilisé. Le type de valeur que nous voulons déclarer en tant que ref est précédé du mot-clé «ref» lors de la déclaration de la méthode et de l'appel de la méthode. Plusieurs paramètres peuvent être déclarés comme «ref» lors de l'appel et de la déclaration d'une méthode.

 en utilisant le système; class DemoRef {public vide Square (réf int int) {s = s * s; }} class Ref_main {static void Main () {DemoRef ob = new DemoRef (); int a = 10; Console.WriteLine ("un appel de méthode before:" + a); ob.Square (réf. a); // Utilisé le mot clé ref Console.WriteLine ("a after call:" + a); }} // sortie d'un appel de méthode before: 10 d'un appel de méthode after: 100 

Dans le code ci-dessus, la variable 'a' est transmise en tant qu'argument à la méthode Square (ref a) avec le paramètre modificateur ref qui lui est associé. Cela signifie que quels que soient les changements que la méthode (réf. A) effectuera sur la variable "a" à l'intérieur, elle reflétera la valeur d'origine du "a", également en dehors de la méthode.

Il faut garder à l’esprit certains points importants lorsqu’il s’agit du modificateur de paramètre «ref».

  • L'argument que vous transmettez par la référence à une méthode doit être initialisé avant l'appel de la méthode.
  • La méthode ne doit pas affecter la valeur initiale à l'argument ref.
  • Vous pouvez également utiliser ref avec la variable de référence.

Définition du mot-clé Out

Chaque fois que vous appelez une méthode, elle ne renverrait qu'une seule valeur. Si vous souhaitez qu'une méthode renvoie plus d'une valeur lors d'un appel, vous devez utiliser le mot clé «out» avec les paramètres que vous souhaitez renvoyer lorsque la méthode est terminée. Il arrive parfois que lorsque nous ne voulons rien transmettre à la méthode mais que la méthode retourne quelque chose, nous utilisons des paramètres avec un mot clé out. Comprenons-le avec un exemple.

 en utilisant le système; class DemoOut {public int Decompose (double x, fraction double) {int whole_num; nom_ensemble = (int) x; fraction = x - nombre entier; return whole_num; }} class Out_maint {static void Main () {DemoOut ob = new DemoOut (); int i; double fracture; i = ob.Décomposer (100, 125, sortie frac); // mot-clé utilisé Console.WriteLine ("La partie numérique entière est" + i); Console.WriteLine ("fraction fraction is" + frac); }} // la partie entière en sortie est 100 La partie fractionnaire est 0, 125 

Dans le code ci-dessus, deux méthodes sont renvoyées par la méthode Decompose (). L'un renvoie le mot-clé «return», c'est-à-dire le nombre entier, et l'autre, un paramètre qui est précédé du mot-clé out lors de l'appel de la méthode, à savoir «frac».

Les points importants à retenir sur le mot clé out.

  • Contrairement au mot-clé ref, le paramètre utilisant le mot-clé out ne doit pas être initialisé avant l'appel de la méthode.
  • La méthode appelée affectera elle-même une valeur au paramètre avec un mot clé out, car il est considéré comme non attribué à l'intérieur de la méthode appelée, c'est-à-dire qu'il est supposé ne pas avoir de valeur initiale.
  • La méthode appelée doit attribuer une valeur au paramètre out avant la fin de la méthode.
  • Le mot clé out est également applicable à la variable de référence.

Différences clés entre Ref et Out en C #

  1. Lorsqu'une variable précédée du mot-clé ref est transmise à une méthode, les modifications qui y sont apportées à l'intérieur de la méthode sont reflétées dans sa valeur d'origine. Lorsqu'une variable transmise à une méthode est précédée du mot clé out, la méthode la renvoie sans utiliser le mot clé return.
  2. Le paramètre ref doit être initialisé avant d'être passé à une méthode. D'autre part, le paramètre out doit être initialisé dans la méthode à laquelle il est transmis.
  3. Lors de l'appel, de la déclaration ou de la définition d'une méthode, le paramètre ref est explicitement déclaré en tant que ref. D'autre part, lors de l'appel, de la déclaration ou de la définition d'une méthode, le paramètre out est explicitement déclaré comme out.

Conclusion:

Chaque fois que la variable doit être passée par la référence à une méthode, le mot clé ref and out peut être utilisé. Considérant que, la raison d'utiliser les deux mots-clés est différente lorsque le mot-clé ref peut être utilisé pour modifier la valeur de l'argument précédé par le mot-clé ref, passé à la méthode appelée et le mot-clé out est utilisé pour renvoyer la valeur de l'argument précédé par le mot clé out.

Top