C# - ref & out) 복습을 위해 작성하는 글 2023-04-21

rizz·2023년 4월 21일
0

C

목록 보기
8/25

📒 갈무리 - ref & out

📌 ref & out의 공통점

- 값 형식의 매개 변수의 주소 값을 참조하여, 복사해서 변경하는 것이 아닌 직접 변경하는 데 사용하는 키워드

- 런타임에 다르게 처리되며 컴파일 시간에 동일하게 처리됩니다.

📌 ref와 out의 차이점

- ref는 매개 변수로 전달되기 전에 초기화가 되어있어야 한다.

- out은 매개 변수로 전달되기 전에 초기화할 필요가 없고 이전의 값은 모두 무시된 채로 전달된다.

 

📌 EX) ref

// C#
        static void Main(string[] args)
        {
            int num1 = 1;
            int num2 = 2;

			// ref 변수로 참조값을 전달
            Swap(ref num1, ref num2);
            Console.WriteLine($"num1 : {num1}, num2 : {num2}");
        }

		// ref 매개 변수로 참조값을 받음
        static void Swap(ref int a, ref int b)
        {
            int temp = a;
            a = b;
            b = temp;
        }
        
Output:
num1 : 2, num2 : 1

📌 EX) out

// C#
        static void Main(string[] args)
        {
            int num1 = 1;
            int num2 = 2;
            int total = 100;

            Add(num1, num2, out total);
            Console.WriteLine($"total : {total}");
        }
		
        static void Add(int a, int b, out int total)
        {
            total = a + b;
        }

// 기존의 값이 100이었지만, 무시되고 a + b의 값을 출력
Output:
total : 3

 

💡 TIP

out 매개 변수는 메서드가 여러 값을 리턴할 때 유용하게 사용된다.

메소드 오버로딩 할 때, 한 메서드가 ref 매개 변수를 사용하고 다른 메서드가 out 매개 변수를 사용하면 메서드 오버로딩 할 수 없다.

Property는 변수가 아니기 때문에 ref 또는 out 매개 변수로 전달될 수 없다.

profile
복습하기 위해 쓰는 글

0개의 댓글