처리중입니다. 잠시만 기다려주세요.
TTJ 코딩클래스
정규반 단과 자료실 테크 뉴스 코딩 퀴즈
테크 뉴스
Hacker News 2026.05.24 48

C#에도 드디어 유니온 타입이 온다 - .NET 11 Preview 2의 가장 큰 변화

Hacker News 원문 보기
C#에도 드디어 유니온 타입이 온다 - .NET 11 Preview 2의 가장 큰 변화

마침내 C#이 함수형의 문을 열다

오랫동안 F#이나 TypeScript, Rust 같은 언어를 쓰는 개발자들이 C#을 보면서 아쉬워하던 게 하나 있어요. 바로 유니온 타입(Union Type)의 부재였거든요. .NET 11 Preview 2가 공개되면서 드디어 이 기능이 정식으로 들어옵니다. 마이크로소프트의 Andrew Lock이 자세히 분석한 이 변화는, 단순히 문법 하나 추가된 게 아니라 C#이라는 언어의 사고방식 자체가 한 단계 진화한 사건이에요.

유니온 타입이 뭐냐면, 쉽게 말해 "이 값은 A이거나 B일 수 있다"를 타입 시스템 차원에서 표현할 수 있게 해주는 기능이에요. 지금까지 C#에서 "성공하면 결과를 반환하고, 실패하면 에러 메시지를 반환하는 함수"를 만들려면 예외를 던지거나, OneOf 같은 외부 라이브러리를 쓰거나, 직접 추상 클래스와 상속 구조를 만들어야 했어요. 이게 진짜 번거로웠거든요.

실제로 어떻게 생겼나

새로운 문법은 이렇게 생겼어요. union Result { Success(string Value); Failure(string Error); } 이렇게 한 줄로 "Result는 Success이거나 Failure이다"를 선언할 수 있어요. 그러면 이걸 받아서 처리하는 코드는 패턴 매칭을 활용해서 result switch { Success s => ..., Failure f => ... } 이런 식으로 깔끔하게 쓸 수 있죠.

가장 중요한 건 컴파일러가 모든 케이스를 다 처리했는지 검사해준다는 거예요. 만약 Failure를 처리하는 코드를 까먹고 안 썼다면 컴파일 단계에서 경고가 떠요. 런타임에 가서야 "어? 이 케이스 처리 안 했네" 하고 터지는 게 아니라요. 이걸 "exhaustiveness check(완전성 검사)"라고 부르는데, 이게 있고 없고가 코드의 안정성을 크게 바꿔놓습니다.

내부 구현도 흥미로워요. 마이크로소프트는 유니온을 두 가지 종류로 나눠서 제공할 예정이에요. 하나는 closed union으로, 모든 가능한 케이스를 미리 다 알고 있는 형태고요. 다른 하나는 type union으로, 기존에 존재하던 클래스들을 묶어서 "이 중 하나"라고 표현하는 거예요. 첫 번째는 F#의 discriminated union과 비슷하고, 두 번째는 TypeScript의 union type과 비슷하다고 보면 돼요.

다른 언어들과 비교해보면

F# 진영에서는 "드디어!"라는 반응이 나오고 있어요. F#은 .NET 위에서 돌아가지만 처음부터 discriminated union을 가지고 있었거든요. 그래서 F# 개발자들은 C# 코드와 연동할 때마다 답답함을 느꼈는데, 이제 그 벽이 한층 낮아진 거예요. TypeScript 개발자들은 친숙함을 느낄 거고, Rust의 enum을 써본 사람들도 비슷한 감각으로 접근할 수 있어요.

다만 Rust처럼 강력한 패턴 매칭과 결합된 형태는 아니에요. C#의 패턴 매칭이 최근 몇 년간 많이 발전했지만 여전히 Rust나 OCaml 수준의 표현력은 아니거든요. 그래도 LINQ, record 타입, 패턴 매칭, 그리고 이번 유니온 타입까지 합쳐지면 C#으로 함수형 스타일 코드를 쓰는 게 정말 자연스러워질 거예요.

한국 개발자에게 의미하는 것

국내에서 .NET을 메인으로 쓰는 곳은 게임 업계(유니티), 일부 금융권, 그리고 윈도우 기반 엔터프라이즈 환경이 많아요. 특히 도메인 모델링을 중요하게 생각하는 DDD 진영에서 이 기능은 정말 환영받을 거예요. "주문 상태는 대기, 결제완료, 배송중, 완료, 취소 중 하나" 같은 비즈니스 규칙을 타입으로 강제할 수 있게 되니까요.

또 백엔드 API에서 에러 처리를 할 때, 예외를 던지는 대신 Result<T, Error> 패턴을 자연스럽게 쓸 수 있게 돼요. 이건 성능상으로도 이점이 있고, 에러 처리 흐름이 명시적으로 드러나서 코드 리뷰하기도 훨씬 편해져요. 그동안 OneOf나 LanguageExt 같은 라이브러리에 의존하던 팀들은 이제 표준 문법으로 갈아탈 수 있게 된 거고요.

마무리

C#은 매년 한두 가지씩 굵직한 기능을 추가하면서 점점 더 표현력 좋은 언어가 되어가고 있어요. 이번 유니온 타입은 그중에서도 패러다임을 바꿀 만한 변화라고 생각해요. 여러분은 어떤 언어의 유니온 타입을 가장 좋아하시나요? 그리고 C# 프로젝트에서 이 기능이 들어오면 어디에 가장 먼저 적용해보고 싶으세요?


🔗 출처: Hacker News

이 뉴스가 유용했나요?

이 기술을 직접 배워보세요

AI 도구, 직접 활용해보세요

AI 시대, 코딩으로 수익을 만드는 방법을 배울 수 있습니다.

AI 활용 강의 보기

"비전공 직장인인데 반년 만에 수익 파이프라인을 여러 개 만들었습니다"

실제 수강생 후기
  • 비전공자도 6개월이면 첫 수익
  • 20년 경력 개발자 직강
  • 자동화 프로그램 + 소스코드 제공

매일 AI·개발 뉴스를 받아보세요

주요 테크 뉴스를 매일 아침 이메일로 전해드립니다.

스팸 없이, 언제든 구독 취소 가능합니다.