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, 이 두 자리에서만 등장해요.

더 알아보기