Section 31.1: ref 키워드를 사용해 매개변수를 참조로 전달하기 (pass by reference)

MS 공식 문서 발췌:

C# 에서는, 매개변수를 값 또는 참조 방식으로 전달할 수 있다. 참조 방식으로 전달할 경우, 함수 멤버, 메소드, 속성값 (property), 인덱서, 연산자 (operator) 및 생성자에서 해당 값을 변경할 수 있으며, 이 변경사항은 호출을 수행한 환경에서도 유지되게 된다. 이러한 참조 방식으로 매개변수를 전달하고 싶다면, ref 혹은 out 키워드를 사용할 수 있다.

refout 의 차이점은, out 을 사용할 경우 해당 매개변수는 호출이 종료되기 전까지 새로운 값이 반드시 할당되어야 한다는 점이다. 대조적으로, ref 를 사용해 전달된 매개변수는 값이 변경될 수도, 변경되지 않을 수도 있다.

using System; class Program { static void Main(string[] args) { int a = 20; Console.WriteLine("Inside Main - Before Callee: a = {0}", a); Callee(a); Console.WriteLine("Inside Main - After Callee: a = {0}", a); Console.WriteLine("Inside Main - Before CalleeRef: a = {0}", a); CalleeRef(ref a); Console.WriteLine("Inside Main - After CalleeRef: a = {0}", a); Console.WriteLine("Inside Main - Before CalleeOut: a = {0}", a); CalleeOut(out a); Console.WriteLine("Inside Main - After CalleeOut: a = {0}", a); Console.ReadLine(); } static void Callee(int a) { a = 5; Console.WriteLine("Inside Callee a : {0}", a); } static void CalleeRef(ref int a) { a = 6; Console.WriteLine("Inside CalleeRef a : {0}", a); } static void CalleeOut(out int a) { a = 7; Console.WriteLine("Inside CalleeOut a : {0}", a); } }

출력 결과 :

Inside Main - Before Callee: a = 20 Inside Callee a : 5 Inside Main - After Callee: a = 20 Inside Main - Before CalleeRef: a = 20 Inside CalleeRef a : 6 Inside Main - After CalleeRef: a = 6 Inside Main - Before CalleeOut: a = 6 Inside CalleeOut a : 7 Inside Main - After CalleeOut: a = 7
본 문서는 C# Notes for Professionals (라이센스:CC-BY-SA) 를 한글로 번역한 문서입니다. 번역상 오류가 있을 수 있으므로 정확한 내용은 원본 문서를 참고하세요.

[출처] https://books.goalkicker.com/CSharpBook/

반응형

+ Recent posts