Maison > Article > développement back-end > Difficultés C# résolues une par une (1) : passage du paramètre ref
Généralement, les paramètres d'une méthode sont passés par valeur, c'est-à-dire qu'un objet est passé à la méthode en tant que paramètre, et l'objet est stocké dans l'espace mémoire du pointeur où se trouve l'objet paramètre (décrit dans C), c'est-à-dire que l'objet crée une copie à cet emplacement, et lorsque la méthode se termine, la copie sera détruite. L'utilisation de cette méthode de transfert représente la grande majorité des transferts quotidiens de paramètres de méthode ;
Une autre situation est le passage de référence, qui est différent du passage de valeur. Lorsque l'objet est passé à une méthode, cela n'a aucun effet sur les paramètres de la méthode. Ce qui est toujours renvoyé est la méthode affectée par la valeur du paramètre d'origine. , c'est-à-dire que MethodInstance(ref _refValue) appelle la méthode Method(ref _arg), mais _refValue n'a aucun effet sur Method et le résultat affecté par _arg est toujours renvoyé. On peut également penser que _arg doit être attribué avant utilisation.
Exemple :
Une autre situation est le passage par référence, ce qui est différent du passage par valeur. Lorsque l'objet est passé à la méthode, cela n'a aucun effet sur les paramètres de la méthode. renvoyé est la valeur du paramètre d'origine. La méthode affectée, c'est-à-dire MethodInstance(ref _refValue) appelle la méthode Method(ref _arg), mais _refValue n'a aucun effet sur Method et le résultat affecté par _arg est toujours renvoyé. On peut également penser que _arg doit être attribué avant utilisation.
Exemple :
using System; /****************************** * Chapter:C#难点逐个击破(一) * Author:王洪剑 * Date:2010-1-11 * Blog:http://www.51obj.cn/ * Email:walkingp@126.com * Description:重点讲解值传递方式与引用传递方式 * ***************************/ namespace Wang.TestRef { public class NormalClass { public void ShowNormalResult(string name) { name = "Wang Hongjian"; Console.WriteLine(name); } } public class RefClass { /// <summary> /// 引用类型ref类 /// </summary> /// <param name="name"></param> public void ShowRefResult(ref string name) { name = "Wang Hongjian"; Console.WriteLine(name); } } class Program { static void Main(string[] args) { string _name = "Zhou Runfa";//传递参数 #region 值传递参数方式 NormalClass n = new NormalClass(); n.ShowNormalResult(_name);//正常调用 #endregion #region 引用传递参数方式 RefClass o = new RefClass(); o.ShowRefResult(ref _name);//结果仍然为引用传递参数 Console.ReadKey(); #endregion } } }
Résultat de l'exécution :
Voici les difficultés C# ci-dessus à surmonter un par un (1) : Le contenu passé par le paramètre ref Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn) !