Microsoft는 .NET 11과 함께 제공될 버전인 C# 15의 미리 보기에서 사용할 수 있는 새로운 기능을 공개했다. 이번 업데이트에는 공용체 형식, 봉인된 계층 구조, 안전하지 않은 코드를 처리하는 업데이트된 모델의 미리 보기와 함께 일상적인 사용에서 반복되는 절차적 코드를 줄이는 것을 목표로 하는 소규모 변경 사항이 포함된다.
컬렉션 식 내부의 인수
C#의 컬렉션 식은 값을 여러 유형의 컬렉션으로 변환할 수 있지만, 이전에는 기본 생성자나 생성 함수에 인수를 전달할 수 없었다. C# 15에는 with(...) 형식의 새로운 요소가 추가되며, 식의 시작 부분에 배치해 이러한 인수를 전달할 수 있다.
이를 통해 식 내부에서 직접 용량을 지정해 목록을 생성하거나, 요소를 추가하는 작업과 생성을 분리하지 않고 StringComparer.OrdinalIgnoreCase를 전달해 HashSet을 생성할 수 있다. Microsoft는 이 기능이 앞으로 예정된 사전 식 구문을 구축하기 위한 토대가 된다고 설명한다. 사전 식에서는 키에 사용할 비교 도구를 지정해야 할 가능성이 높다.
확장 인덱스를 통한 요소 접근
C# 14가 메서드와 함께 속성 및 연산자의 확장 멤버를 추가한 데 이어, C# 15는 이 모델을 확장 인덱스까지 확대한다. 이에 따라 수신 객체의 요소에 해당 인덱스가 원래 해당 형식에 정의된 것처럼 접근할 수 있다.
Microsoft가 제시한 예제에서는 IEnumerable<int>의 요소에 접근하려면 ElementAtIndex와 같은 도우미 메서드가 필요했다. 새로운 구문에서는 수신 객체에 연결된 확장 인덱스를 통해 numbers[2]를 사용할 수 있다. 블로그는 인덱스가 정적일 수 없으므로 확장 컨테이너에 이름이 지정된 수신 객체가 포함되어야 한다고 설명한다.
break 및 continue 반복문 레이블
C# 15에서는 반복문에 레이블을 지정한 뒤 break 또는 continue를 해당 레이블로 직접 보낼 수 있다. 이는 중첩된 반복문에서 유용하다. 이전에는 외부 반복문을 빠져나오려면 보통 불리언 변수, goto 사용, 또는 로직을 별도의 함수로 이동하는 방법이 필요했다.
실제로 레이블을 사용하면 코드에서 종료 대상을 명확히 만들 수 있으며, 원하는 요소를 찾았는지 추적하는 변수가 필요 없어진다. 예제에서는 scan이라는 이름이 지정된 반복문을 보여 주며, break scan을 사용해 해당 반복문에서 직접 빠져나올 수 있다.
개발자에게 무엇이 달라지는가?
이러한 기능은 .NET의 실행 모델을 변경한다기보다 코드 구문을 재구성하고 일부 반복적인 서식을 줄인다. 특히 컬렉션 식을 사용하거나, 중첩된 반복문을 처리하거나, 확장 가능한 형식에 더 간결한 접근 인터페이스가 필요한 프로젝트에서 가치가 두드러진다.
그러나 이러한 기능은 여전히 미리 보기 단계이므로 아직 최종적이고 안정적인 인터페이스를 나타내지는 않는다. Microsoft는 개발자들에게 .NET 11을 다운로드해 자신의 애플리케이션에서 C# 15를 시험해 보도록 권장하며, 새로운 기능에 대한 전체 참조 문서를 확인하고 csharplang 프로젝트에서 진행 중인 논의에 참여할 것을 요청한다. 이 자료의 출처는 해당 기능이 안정 버전으로 전환되는 최종 일정을 지정하지 않는다.