다음을 통해 공유


C# 15의 새로운 기능

C# 15에는 다음과 같은 새로운 기능이 포함되어 있습니다. 최신 Visual Studio 2026 참가자 버전 또는 .NET 11 미리 보기 SDK를 사용하여 다음 기능을 사용해 보세요.

C# 15는 최신 C# 미리 보기 릴리스입니다. .NET 11 미리 보기 버전은 C# 15를 지원합니다. 자세한 내용은 C# 언어 버전 관리참조하세요.

.NET 다운로드 페이지에서 최신 .NET 11 미리 보기 SDK 를 다운로드할 수 있습니다. Visual Studio 2026 인사이더 빌드를 다운로드하면 .NET 11 미리 보기 SDK도 포함됩니다.

"C#의 새로운 기능" 페이지는 공개 미리 보기 릴리스에서 사용할 수 있는 경우 새 기능을 추가합니다. roslyn 기능 상태 페이지작업 세트 섹션은 예정된 기능이 메인 브랜치에 병합될 때를 추적합니다.

C# 15에 도입된 주요 변경 사항주요 변경 사항 문서에서 찾을 수 있습니다.

비고

이러한 기능에 대한 피드백에 관심이 있습니다. 이러한 새로운 기능에 문제가 있는 경우 새 문제를 dotnet/roslyn 리포지토리에 만드세요.

컬렉션 식 인수

컬렉션 식의 첫 번째 요소로 with(...) 요소를 사용하여 기본 컬렉션의 생성자나 팩터리 메서드에 인수를 전달할 수 있습니다. 이 기능을 사용하면 컬렉션 식 구문 내에서 직접 용량, 비교자 또는 기타 생성자 매개 변수를 지정할 수 있습니다.

다음 예제에서는 용량 인수를 List<T> 생성자에 전달하고, 비교자를 HashSet<T>에 전달하는 방법을 보여줍니다.

string[] values = ["one", "two", "three"];

// Pass capacity argument to List<T> constructor
List<string> names = [with(capacity: values.Length * 2), .. values];

// Pass comparer argument to HashSet<T> constructor
HashSet<string> set = [with(StringComparer.OrdinalIgnoreCase), "Hello", "HELLO", "hello"];
// set contains only one element because all strings are equal with OrdinalIgnoreCase

컬렉션 식 인수에 대한 자세한 내용은 컬렉션 식 또는 기능 사양에 대한 언어 참조 문서를 참조하세요. 컬렉션 이니셜라이저에서 컬렉션 식 인수를 사용하는 방법에 대한 자세한 내용은 개체 및 컬렉션 이니셜라이저를 참조하세요.

유니언 타입

C# 15에는 여러 사례 형식 중 하나일 수 있는 값을 나타내는 공용 형식이 도입되었습니다. 키워드 union를 사용하여 유니언을 선언합니다.

public record class Cat(string Name);
public record class Dog(string Name);
public record class Bird(string Name);

public union Pet(Cat, Dog, Bird);

유니온은 각 케이스 형식에서 암묵적으로 변환하며, 컴파일러는 모든 케이스 형식에 대해 식이 완전하게 포괄되도록 보장합니다 switch.

Pet pet = new Dog("Rex");

string name = pet switch
{
    Dog d => d.Name,
    Cat c => c.Name,
    Bird b => b.Name,
};

유니언 타입은 .NET 11 프리뷰 2에 처음 등장했습니다. 초기 .NET 11 미리 보기에서는 UnionAttributeIUnion 인터페이스가 런타임에 포함되지 않으므로, 프로젝트에서 이들을 선언해야 합니다. 이후 .NET 11 미리 보기 버전에는 이러한 런타임 유형이 포함됩니다. 또한 조합 구성원 공급자를 포함하여 제안 사양의 일부 기능은 아직 구현되지 않았습니다. 이러한 기능은 향후 미리 보기로 제공됩니다.

자세한 내용은 언어 참조 또는 기능 사양Union 형식을 참조하세요.