← ClaudeAtlas

csharp14-dotnet10-featureslisted

Reference for what is new in C# 14 and .NET 10, covering both language features and platform or library changes. Use this skill whenever writing, reviewing, or migrating C# code that targets net10.0, whenever the user asks what is new in C# 14 or .NET 10, and when deciding whether a piece of code can use a C# 14 only construct such as the field keyword, extension blocks, null conditional assignment, or file based apps. This is a feature reference, not a migration runbook.
GuerthCastro/claude-skills-dotnet · ★ 1 · AI & Automation · score 72
Install: claude install-skill GuerthCastro/claude-skills-dotnet
# C# 14 and .NET 10: What Is New Author: Guerth Castro (github.com/GuerthCastro). Licensed under MIT. Quick reference for the language and platform features introduced in C# 14, which ships with the .NET 10 SDK (released November 2025). Use it to confirm a construct is actually available before suggesting it, and to explain why a modern idiom works the way it does. This is an original summary of publicly documented features. Verify current behavior against Microsoft Learn before relying on any detail here, since this area moves quickly and the docs are the authority. ## When to use this - Reviewing or writing C# for `<TargetFramework>net10.0</TargetFramework>` and deciding whether a C# 14 construct is idiomatic in that spot. - The user asks what changed between an older C# version and C# 14, or between .NET 9 and 10. - Deciding whether an old workaround, such as a hand written backing field or a static class extension method, can now be simplified. - Flagging a breaking change during a migration, for example `field` becoming a contextual keyword. ## C# 14 language features ### `field` keyword for auto backed properties Custom get and set logic without declaring a private backing field. The compiler synthesizes it and you refer to it through the contextual keyword `field`: ```csharp public string? FavoritePrimaryColor { get => field; set => field = Validate(value); } ``` Breaking change: an existing accessor that declared a local variable literally named