void
void (C# 참조)
메서드가 값을 반환하지 않는다는 사실, 코드만 봐도 확실하게 표현하고 싶을 때 void를 써요. 함수가 "아무것도 돌려주지 않는다"는 뜻을 메서드 시그니처 자체에 박아두는 키워드죠.
출처: Microsoft Learn
본문
void는 메서드나 로컬 함수의 반환 타입으로 쓰여요. 반환 타입 자리에 void가 있으면 "이 메서드는 값을 돌려주지 않는다"는 뜻이 되죠. C# 언어의 첫 버전부터 있던 기능이라, 버전 조건 없이 언제든 쓸 수 있어요.
한번 볼게요. 아래 메서드는 숫자 목록을 받아서 콘솔에 출력만 하고, 값을 반환하지 않아요.
public static void Display(IEnumerable<int> numbers)
{
if (numbers is null)
{
return;
}
Console.WriteLine(string.Join(" ", numbers));
}
반환 타입이 void니까 중간에 return;이라고 값 없이 그냥 돌아가도 되고, 메서드 끝에 도달해도 그냥 끝나요. return이 값을 들고 돌아가는 게 아니라 "여기서 끝내고 돌아가겠다"는 신호일 뿐이죠. 그래서 조건에 따라 numbers가 null일 때처럼 더 볼 것도 없을 때 조기 종료용으로 쓰는 패턴이 자연스럽게 나와요.
그런데 void가 쓰이는 곳은 반환 타입만 있는 게 아니에요. 참조 타입(referent type)으로도 쓸 수 있는데, 이건 타입을 알 수 없는 대상에 대한 포인터를 선언할 때예요. 예를 들면 메모리 주소만 잡고 있는데 그 주소에 뭐가 들어 있는지 아직 모르는 상황 같은 거죠. 이 부분은 포인터 형식 문서에서 자세히 다뤄요.
한 가지 꼭 기억하세요 — void는 변수의 타입으로는 쓸 수 없어요. 값이 아예 없음을 나타내는 타입이니, "void 값을 담는 변수"는 성립할 수가 없죠. 그래서 함수의 반환 타입이랑 포인터용 referent type, 이 두 자리에서만 등장해요.