C#, 자료구조
ref 와 out
MuscleDeveloper5683
2025. 4. 24. 20:19
728x90
SMALL
ref와 out은 둘 다 값을 참조 형태로 전달하기 위해 사용되는 키워드지만, 용도와 사용 방식에 차이점이 있다.
ref란?
ref 키워드는 메서드에 변수를 참조로 전달할 때 사용된다. 이를 통해 메서드 내에서 변수의 값을 변경할 수 있으며, 변경된 값이 반영된다. ref를 사용할 때는 변수가 메서드 호출 전에 초기화되어 있어야 한다.
이처럼 변수를 초기화 안시키고 사용하면 컴파일 중에 오류가 난다.
왜 오류가 날까?
ref를 통해 참조된 변수가 메서드 내에서 미리 정의된 값에 의존할 수 있기 때문이다.
out이란?
out 키워드도 메서드에 변수를 참조로 전달할 때 사용되지만, out을 사용할 때는 변수를 메서드 호출 전에 초기화할 필요가 없다. 대신, 메서드 내에서 반드시 변수를 초기화해야 한다.
구분 | ref | out |
목적 | 변수의 값을 메서드 안에서 읽고 수정 | 메서드에서 새 값을 할당해서 반환 |
초기화 여부 | 메서드 호출 전 반드시 초기화되어 있어야 함 | 메서드 내부에서 반드시 값을 할당해야 함 |
메서드 내부 동작 | 값을 읽을 수 있고, 수정 가능 | 초기 값을 읽지 못하고, 새 값으로 반드시 대체 |
주 용도 | 값을 전달하고 수정한 결과를 받고 싶을 때 | 값을 여러 개 반환하고 싶을 때 대체로 사용 |
즉 아래처럼 기억하면 쉽다.
- ref: 기존 값을 넘기고, 바꿔서 받아오기
- out: 새 값을 받아오기 위한 빈 그릇
728x90