오늘 배운 내용
- ‘ref’와 ‘out’의 사용 시 차이
기술 면접 예상 질문 - ‘ref’와 ‘out’의 사용 시 차이는 무엇인가요?
먼저 ref
와 out
키보드는 메서드 호출시 매개변수를 참조로 넘겨주는 키워드 입니다.
ref
키워드로 전달할 매개변수는 반드시 초기화 되어야 하고, 메서드 내부에서 해당 참조를 읽고 쓸수 있습니다.
전달된 매개변수를 메서드 내에서 변경해야 할 때 사용합니다.
out
키워드로 전달할 매개변수는 초기화 되어있지 않아도 되고, 매서드 내부에서 해당 참조를 읽기전, 메서드 종료전 반드시 초기화 해주어야 합니다.
메서드가 여러 값을 반환해야 할 때 사용합니다.
+
추가적으로 이번에 알게 된 사실인데
ref
와 out
키워드를 값 타입이 아닌 참조 타입에도 사용할 수 있다고 한다.
먼저 참조 타입의 값들은 아래와 같이 생성될텐데
MyClass mc = new MyClass();
new MyClass()는 힙 메모리 상에 객체를 생성한다.
mc는 MyClass 타입의 참조 변수로 힙 메모리 상에 생성된 객체의 주소를 가르킨다.
일반적으로 참조타입을 매개변수로 넘길때 힙 메모리 상에 생성된 해당 객체의 주소가 매개변수로 넘어간다.
그런데 ref,out 키워드를 사용하면 참조 변수 mc를 넘겨줄 수 있다.
즉 포인터 변수와 유사한 기능을 제공한다.