Section 31.3: ref 파라미터와 out 파라미터 비교

예제

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(); Console.WriteLine("Inside Main - Before CalleeRef: a = {0}", a); CalleeRef(ref a); Console.WriteLine("Inside Main - After CalleeRef: a = {0}", a); Console.WriteLine(); 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 += 10; Console.WriteLine("Inside CalleeRef a : {0}", a); } static void CalleeOut(out int a) { // 여기서 a 는 메소드 선언시에 함께 선언되었을 뿐, 아직 값이 할당되지 않았으므로 a+=15 와 같은 표현을 사용할 수 없다 a = 25; // 이러한 방식으로 초기화를 해주어야 한다 Console.WriteLine("Inside CalleeOut a : {0}", a); } }

출력 결과

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

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

반응형

+ Recent posts