Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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.