Maison  >  Article  >  développement back-end  >  Difficultés C# résolues une par une (1) : passage du paramètre ref

Difficultés C# résolues une par une (1) : passage du paramètre ref

黄舟
黄舟original
2016-12-22 14:02:401713parcourir

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 :

Difficultés C# résolues une par une (1) : passage du paramètre ref


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) !


Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn