>  기사  >  백엔드 개발  >  C#의 어려움을 하나씩 해결함(1): ref 매개변수 전달

C#의 어려움을 하나씩 해결함(1): ref 매개변수 전달

黄舟
黄舟원래의
2016-12-22 14:02:401715검색

일반적으로 메소드의 매개변수는 값으로 전달됩니다. 즉, 객체가 메소드에 매개변수로 전달되고, 해당 객체는 매개변수 객체가 위치한 포인터의 메모리 공간에 저장됩니다. C) 즉, 개체는 이 위치에 복사본을 생성하고 메서드가 종료되면 이 전송 메서드의 사용이 일일 메서드 매개변수 전송의 대부분을 차지합니다.

또 다른 상황은 값 전달과 다른 참조 전달입니다. 객체가 메소드 매개변수에 영향을 주지 않고 여전히 반환되는 것은 원래 매개변수 값의 영향을 받는 메소드입니다. 즉, MethodInstance(ref _refValue)는 Method(ref _arg) 메서드를 호출하지만 _refValue는 Method에 영향을 주지 않으며 _arg의 영향을 받은 결과가 계속 반환됩니다. 사용하기 전에 _arg를 할당해야 한다고 생각할 수도 있습니다.

예:

또 다른 경우는 참조에 의한 전달인데, 이는 객체가 메소드에 전달될 때 여전히 메소드 매개변수에 영향을 주지 않습니다. 반환된 값은 원래 매개 변수의 값입니다. 즉, MethodInstance(ref _refValue)는 Method(ref _arg) 메서드를 호출하지만 _refValue는 Method에 영향을 주지 않으며 _arg의 영향을 받은 결과가 계속 반환됩니다. 사용하기 전에 _arg를 할당해야 한다고 생각할 수도 있습니다.

예:

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 
} 
} 
}

실행 결과:

C#의 어려움을 하나씩 해결함(1): ref 매개변수 전달


위는 C#의 어려움입니다. 하나씩 극복하다 (1): ref 매개변수에 의해 전달된 내용. 더 많은 관련 내용을 보려면 PHP 중국어 웹사이트(www.php.cn)를 주목하세요!


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.