A C# 15 újdonságai

A C# 15 az alábbi új funkciókat tartalmazza. Próbálja ki ezeket a funkciókat a Visual Studio 2026 insider legújabb verziójával vagy a .NET 11 előzetes verziójú SDK-val:

A C# 15 a legújabb C# előzetes kiadás. A .NET 11 előzetes verziói támogatják a C# 15-öt. További információért lásd: C# nyelv verziószámozás.

A .NET letöltési oldaláról letöltheti a legújabb .NET 11 előzetes verziójú SDK-t. A Visual Studio 2026 insidereket is letöltheti, amelyek tartalmazzák a .NET 11 előzetes verziójú SDK-t.

A "What's new in C#" (Újdonságok a C#-ban) oldal új funkciókat ad hozzá, ha nyilvános előzetes kiadásban érhetők el. A roslyn funkció állapotlapjának munkakészlet szakasza nyomon követi, mikor az új funkciók egyesülnek a főágba.

A C# 15-ben bevezetett kompatibilitástörő változásokat a kompatibilitástörő változásokról szóló cikkünkben találja.

Megjegyzés:

Szeretnénk visszajelzést küldeni ezekről a funkciókról. Ha problémákat talál az új funkciók bármelyikével kapcsolatban, hozzon létre egy új problémát, a dotnet/roslyn adattárban.

Gyűjteménykifejezés argumentumai

Az alapul szolgáló gyűjtemény konstruktorának vagy gyári metódusának argumentumokat úgy adhat át, hogy egy with(...) elemet használ egy gyűjteménykifejezés első elemeként. Ez a funkció lehetővé teszi kapacitások, összehasonlítók vagy más konstruktorparaméterek megadását közvetlenül a gyűjteménykifejezés szintaxisában.

Az alábbi példa bemutatja, hogyan adhat át kapacitásargumentumot egy List<T> konstruktornak és egy összehasonlítónak a HashSet<T>következőhöz:

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

A gyűjteménykifejezés argumentumairól további információt a gyűjteménykifejezésekről vagy a szolgáltatás specifikációjárólszóló nyelvi referenciacikkben talál. A gyűjtemény-inicializálók gyűjteménykifejezési argumentumainak használatáról további információt az Objektum- és gyűjtemény inicializálók című témakörben talál.

Egyesítő típusok

A C# 15 egyesítő típusokat vezet be, amelyek olyan értéket képviselnek, amely több esettípus egyike lehet. Egyesítés deklarálása a union kulcsszóval:

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

public union Pet(Cat, Dog, Bird);

Az uniók implicit konverziókat biztosítanak az egyes esettípusokból, és a fordító biztosítja, hogy a kifejezések minden esettípust teljes körűen lefedjenek.

Pet pet = new Dog("Rex");

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

Az egyesítő típusok először a .NET 11 Preview 2-ben jelentek meg. A korai .NET 11-es előzetes verziókban a UnionAttribute és a IUnion interfészek nem szerepelnek a futtatókörnyezetben, ezért deklarálnia kell őket a projektben. A .NET 11 későbbi előzetes verziói tartalmazzák ezeket a futtatókörnyezet-típusokat. Emellett a javaslat specifikációjának egyes funkciói még nem implementálva vannak, beleértve a szakszervezeti tagszolgáltatókat is. Ezek a funkciók a jövőbeni előzetes verziókban jelennek meg.

További információért lásd a Union types részét a nyelvi referenciában, illetve a feature specification-t.