Trawling

마이크로소프트 .NET 11 출시…C# 15, 가능한 반환 결과를 선언해 분기 누락 점검

마이크로소프트 .NET 팀이 2026년 11월 10일 .NET 11을 출시했습니다. 기본 언어 버전 C# 15의 유니언 타입은 함수가 돌려줄 수 있는 여러 결과 유형을 하나의 반환형으로 선언하고, switch 식에서 빠진 결과 처리를 컴파일러가 검사합니다. ASP.NET Core는 이를 JSON 요청·응답과 자동 생성 OpenAPI 문서에 반영하지만, 경로·쿼리·헤더·폼 입력 바인딩은 지원하지 않습니다.

마이크로소프트 .NET 팀은 2026년 11월 10일 .NET 11 출시를 발표했습니다. .NET 11을 대상으로 하는 프로젝트의 기본 언어 버전은 C# 15입니다. C# 15의 유니언 타입은 값이 여러 선언된 유형 가운데 하나가 되도록 정합니다. 함수가 상품 정보나 ‘상품을 찾지 못함’처럼 서로 다른 결과를 돌려줄 때, 가능한 결과 유형을 하나의 반환형에 함께 선언할 수 있습니다.

마이크로소프트가 든 상품 조회 예제에서는 ProductLookup을 Product 또는 ProductNotFound로 선언합니다. 결과를 받은 코드는 switch 식에서 상품을 찾은 경우와 해당 ID의 상품이 없는 경우를 각각 처리합니다. 컴파일러는 선언된 케이스가 모두 switch 식에서 다뤄졌는지 검사합니다. 결과 유형을 하나로 묶으려고 object나 서로 관계없는 유형의 공통 기본 클래스를 사용할 필요도 줄어듭니다.

C# 15에는 닫힌 계층도 추가됐습니다. 닫힌 클래스는 직접 상속할 수 있는 범위를 선언한 어셈블리 안으로 제한해, 컴파일러가 상속 구조를 바탕으로 패턴을 검사할 수 있게 합니다. 유니언 타입은 이미 있는 여러 유형을 하나의 결과로 묶을 때 유용하고, 닫힌 계층은 직접 관리하는 상속 관계에 맞습니다.

유니언 타입은 C# 코드에서만 활용되지 않습니다. ASP.NET Core는 System.Text.Json을 사용하는 Minimal API와 MVC의 JSON 요청·응답 본문에서 이를 지원합니다. 자동 생성 OpenAPI 문서에는 유니언 타입의 가능한 케이스를 anyOf 스키마로 기록합니다. 이에 따라 코드에서 선언한 결과 유형이 웹 API의 JSON 본문과 API 설명서에도 이어집니다.

지원 범위는 JSON 본문입니다. 경로 변수, 쿼리 매개변수, 헤더, 폼 입력을 바인딩할 때는 유니언 타입을 지원하지 않습니다. 여러 케이스가 같은 JSON 구조를 사용한다면 역직렬화 과정에서 어떤 케이스인지 가릴 분류기를 설정해야 합니다.

업그레이드 선택에는 지원 기간도 영향을 줍니다. .NET 11은 2년 동안 지원하는 STS 릴리스이며, .NET 10은 지원 중인 LTS 릴리스입니다. 마이크로소프트는 두 지원 유형의 품질 및 서비스 정책은 같고 지원 기간이 다르다고 설명합니다. .NET 8과 .NET 9의 지원은 2026년 11월 10일 종료됐습니다. 최신 기능이 필요한 팀은 .NET 11을, 장기 지원 주기를 원하는 팀은 .NET 10을 선택할 수 있습니다.

참고 자료

오류 제보