ref & out 차이

2016. 12. 12. 13:02C# 콘솔( Console )/키워드, 식별자, 주석

1. ref

메소드를 이용한 Swap메소드 ( Call By Reference )


   -> ref는 메소드를 선언할 때 매개변수 앞에 ref를 선언해주고, 호출할 때에도 마찬가지로 ref를 선언하여 호출하여야합니다.
   -> ref는 초기화하지 않지 않을 경우 "오류 1 할당되지 않은 'num1' 지역 변수를 사용했습니다. C:\Users\MyHome\Desktop\HelloWorld\HelloWorld\Program.cs 14 68 HelloWorld "  에러가 발생하게 됩니다.


ex1) ref로 사용할 변수를 초기화하지 않아 에러발생



        static void Main(string[] args) 
        { 
            int num1, num2; 

            Console.WriteLine("매개변수 스왑 전 :num1 = {0}, num2 = {1}", num1, num2); 

            swap(ref num1, ref  num2); 

            Console.WriteLine("매개변수 스왑 후 :num1 = {0}, num2 = {1}", num1, num2); 
        } 

        static void swap(ref int num1, ref int num2) 
        { 
            int num_swap = num1; 
            num1 = num2; 
            num2 = num_swap; 
        }

 




2. out
   -> out은 ref와 비슷하게 변수의 주소를 전달하여 사용되지만 따로 변수를 초기화하지 않고 사용이 가능하다는 점에서 차별화됩니다.


ex2)



        static void Main(string[] args) 

        { 
            int num1, num2; 

            swap(out num1, out num2); 

            Console.WriteLine("매개변수 스왑 후 :num1 = {0}, num2 = {1}", num1, num2); 
        } 

        static void swap(out int num1, out int num2) 
        { 
            num1 = 77; 
            num2 = 7; 
            int num_swap = num1; 
            num1 = num2; 
            num2 = num_swap; 
        }



'C# 콘솔( Console ) > 키워드, 식별자, 주석' 카테고리의 다른 글

params  (0) 2016.12.12
키워드 & 식별자 & 주석  (0) 2016.12.11