Référence du langage C#
ref (Référence C#) Le mot-clé
ref entraîne le passage des paramètres par référence. L'effet est que toute modification apportée aux paramètres de la méthode sera reflétée dans la variable lorsque le contrôle sera rendu à la méthode appelante. Pour utiliser les paramètres ref, la définition de la méthode et l'appel de la méthode doivent utiliser explicitement le mot-clé ref. Par exemple :
Copier le code
class RefExample { static void Method(ref int i) { i = 44; } static void Main() { int val = 0; Method(ref val); // val is now 44 } }
Les paramètres passés au paramètre ref doivent être initialisés en premier. Ceci est différent de out , dont les paramètres n'ont pas besoin d'être explicitement initialisés avant d'être transmis. (Voir out.)
Bien que ref et out soient gérés différemment au moment de l'exécution, ils sont gérés de la même manière au moment de la compilation. Par conséquent, si une méthode prend un paramètre ref et qu’une autre méthode prend un paramètre out, les deux méthodes ne peuvent pas être surchargées. Par exemple, du point de vue de la compilation, les deux méthodes dans le code suivant sont exactement les mêmes, donc le code suivant ne sera pas compilé :
Copier le code
class CS0663_Example { // compiler error CS0663: "cannot define overloaded // methods that differ only on ref and out" public void SampleMethod(ref int i) { } public void SampleMethod(out int i) { } }
Cependant, si l'on une méthode prend des paramètres ref ou out, et une autre méthode ne prend pas ces deux types de paramètres, elle peut être surchargée, comme indiqué ci-dessous :
Copier le code
class RefOutOverloadExample { public void SampleMethod(int i) { } public void SampleMethod(ref int i) { } }
Remarques
Les propriétés ne sont pas des variables et ne peuvent donc pas être transmises comme paramètres de référence.
Pour plus d'informations sur la transmission de tableaux, voir
Passer des tableaux à l'aide de ref et out.
Exemple
Le passage de types de valeur par référence (illustré ci-dessus) est utile, mais ref est également utile pour passer des types de référence. Cela permet à la méthode appelée de modifier l'objet référencé par la référence, puisque la référence elle-même est passée par référence. L'exemple suivant montre que lorsqu'un type référence est passé en tant que paramètre ref, l'objet lui-même peut être modifié.
class RefRefExample { static void Method(ref string s) { s = "changed"; } static void Main() { string str = "original"; Method(ref str); // str is now "changed" } }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!