일반적으로 메소드의 매개변수는 값으로 전달됩니다. 즉, 객체가 메소드에 매개변수로 전달되고, 해당 객체는 매개변수 객체가 위치한 포인터의 메모리 공간에 저장됩니다. 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 매개변수에 의해 전달된 내용. 더 많은 관련 내용을 보려면 PHP 중국어 웹사이트(m.sbmmt.com)를 주목하세요!