[C#] out, ref 키워드

Learning 

When: 1학년 5월 14일

 

How:

학교 수업 시간에 out 키워드를 사용하였는데, 이것이 C#이다 책에서 본 적은 있지만, 정확히 기억이 나지 않아서 공부를 하게 되었습니다.

 

Understanding:

out과 ref를 설명드리기 전에, 이 키워드를 사용하는 상황은 C#으로 프로그래밍을 해본다면 궁금하지 않을 수 없기에 먼저 예시 상황을 들어보겠습니다. 변수를 받아서, 그 int 형식의 변수의 값을 제곱하는 메서드를 만든다고 해보겠습니다. 이때 하나의 변수가 아닌 여러 개의 변수를 골라서 메서드에 넣어야 하는 것은 필수입니다. 하지만 매개변수에 int 변수를 넣으면, int 변수가 안에 들어가는 것이 아닌, int 변수의 '값'이 복사되어서 들어가게 됩니다. 이것을 해결하기 위한 것이 out과 ref입니다. 예상하시는 것처럼 out과 ref는 변수를 매개변수로 받는 키워드이고, 사용법은 매개변수와 인수의 앞에 out 또는 ref를 붙이면 끝입니다.

이제 out과 ref에 대해 설명드리겠습니다.


ref:

ref는 앞서 말씀드린 그대로 변수를 매개변수로 받을 수 있는 키워드이며, 매개변수와 인수의 앞에 ref라고 쓰기만 하면 됩니다. 이렇게 해서 받은 인수의 값을 바꾸면, 그 바뀐 값이 그대로 변수에 저장되어 메서드가 끝난 후에도 변수의 값이 바뀌어 있습니다. 이 키워드를 사용할 때 조건이 있는데, ref로 수식된 변수는 이미 초기화되어 있어야 합니다. 초기화도 되어 있지 않은 변수를 바꿀 수는 없기 때문입니다.


out:

out 키워드는 ref와 비슷하면서도 조금 다릅니다. (마치 Get, Set 메서드와 프로퍼티의 차이처럼요.) 일단 이 메서드는 out으로 수식된 변수가 초기화되어 있을 필요가 없습니다. 즉, 이 메서드는 내부에서 값을 할당하는 것이 필수입니다. 이 메서드는 값을 여러 개 반환하고 싶을 때 자주 사용됩니다. 예를 들어, 메서드를 호출하였을 때 ‘그 메서드가 잘 실행되었는지’와 ‘그 메서드의 반환 값’을 두 개 받고 싶을 때, return으로 bool 값(성공 여부)을 반환하고, 매개변수로 변수를 하나 받아 그 변수에 값을 할당하면 커스텀 Try문(성공하면 값을 주고, 실패하면 null 등을 반환하여 오류를 방지하는 방식)을 만들 수 있습니다. 이 외에도 여러 가지 정보를 한 번에 얻고 싶을 때도 사용할 수 있습니다. 즉, out 키워드는 변수를 만들어서 주는 것(값을 반환하는 것)이고, ref 키워드는 이미 만들어진 변수를 바꿀 때 사용하는 것입니다.

 

Result: out 키워드는 변수를 만들어서 주는 것(값을 반환하는 것)이고, ref 키워드는 이미 만들어진 변수를 바꿀 때 사용하는 것입니다.

'C#' 카테고리의 다른 글

[C#] Null값 받을 수 있는 변수, nullable 변수  (0) 2025.05.31
[C#] 인터페이스와 추상 클래스  (0) 2025.05.15
[C#] 프로퍼티  (0) 2025.05.13
[C#] 다형성  (0) 2025.05.12
[C#] 빠른 입력과 출력  (0) 2025.05.04