티스토리 뷰

C#

C#: out과 ref의 인자 전달방식 차이점

개태형님 2016. 10. 6. 10:11

매개인자 전달시 out 또는 ref 키워드와 함께 전달하면 call by reference처럼 변경된 값을 다시 되돌려 받을 수 있다.

out과 ref 키워드의 차이점을 간단하게 정리 해둔다.

        static void Main(string[] args)
        {
            int a = 0;
            int b; // out 인자로 쓰일 변수는 초기화 하지 않아도 가능

            RefTest(ref a);
            OutTest(out b);

            // ref와 out둘다 전달한 인자값을 돌려 받는다.
            Console.WriteLine("a in Main : " + a); // 6
            Console.WriteLine("b in Main : " + b); // 3

            Console.WriteLine("\n\nPress \"Enter\" key...");
            Console.ReadLine();
        }

        static void RefTest(ref int a)
        {
            a = 5;
            a++;
            Console.WriteLine("a in refTest : " + a); // 6
        }

        static void OutTest(out int b)
        {
            // out 할 인자를 함수 내에서 초기화 해야 한다.
            // 그러므로 인자의 원래값은 초기화 되지 않은 값이라도 전달이 가능하다.

            // b++; // b를 초기화 하지 않은 상태에서는 에러
            b = 2; // 초기화
            b++;
            Console.WriteLine("b in outTest : " + b); // 3
        }
댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday