Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
C# 15 innehåller följande nya funktioner. Prova dessa funktioner med den senaste Visual Studio 2026 insiders-versionen eller .NET 11 preview SDK:
C# 15 är den senaste C#-förhandsversionen. Förhandsversioner av .NET 11 stöder C# 15. Mer information finns i C#-språkversioner.
Du kan ladda ned den senaste förhandsversionen av .NET 11 SDK från nedladdningssidan för .NET. Du kan också ladda ned Visual Studio 2026 insiders, som innehåller .NET 11 preview SDK.
Sidan "Nyheter i C#" lägger till nya funktioner när de är tillgängliga i offentliga förhandsversioner. Arbetsuppsättningsavsnittet på roslyn-funktionsstatussidan spårar när kommande funktioner slås samman till huvudgrenen.
Du hittar eventuella icke-bakåtkompatibla ändringar som introduceras i C# 15 i vår artikel om icke-bakåtkompatibla ändringar.
Anmärkning
Vi är intresserade av din feedback om dessa funktioner. Om du får problem med någon av dessa nya funktioner skapar du ett nytt problem på dotnet/roslyn-lagringsplatsen .
Argument för samlingsuttryck
Du kan skicka argument till den underliggande samlingens konstruktor eller fabriksmetod genom att använda ett with(...) element som det första elementet i ett samlingsuttryck. Med den här funktionen kan du ange kapacitet, jämförelsetal eller andra konstruktorparametrar direkt i syntaxen för samlingsuttryck.
I följande exempel visas hur du skickar ett kapacitetsargument till en List<T> konstruktor och en jämförelse med en 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
Mer information om argument för samlingsuttryck finns i språkreferensartikeln om samlingsuttryck eller funktionsspecifikationen. Information om hur du använder argument för samlingsuttryck i insamlingsinitierare finns i Initiatorer för objekt och samling.
Union-typer
C# 15 introducerar union typer, som representerar ett värde som kan vara en av flera falltyper. Deklarera en union med nyckelordet 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);
Unioner tillhandahåller implicita konverteringar från varje falltyp, och kompilatorn garanterar att switch uttrycken omfattar alla falltyper.
Pet pet = new Dog("Rex");
string name = pet switch
{
Dog d => d.Name,
Cat c => c.Name,
Bird b => b.Name,
};
Unionstyper visades först i .NET 11 Preview 2. I de tidiga .NET 11-förhandsversionerna ingår inte UnionAttribute- och IUnion-gränssnitten i körningen, så du måste deklarera dem i projektet. Senare förhandsversioner av .NET 11 innehåller dessa körtyper. Dessutom har vissa funktioner från förslagsspecifikationen ännu inte implementerats, inklusive leverantörer av fackliga medlemmar. Dessa funktioner kommer i framtida förhandsversioner.
Mer information finns i Unionstyper i språkreferensen eller funktionsspecifikationen.