I november släpps .NET 10 tillsammans med C# 14, en LTS-release med tre års stöd. Vi går igenom vad som är nytt och bra att veta.
Nyheterna i C# 14 och .NET 10
C#14 och .net 10 släpps inom kort och är dessutom en LTS‑release som stöds i tre år och innehåller förbättringar på alla nivåer av plattformen, från runtime till bibliotek och SDK's.
Så vad kan vi då förvänta oss? Vad är det för nyheter och vilka förbättringar har vi att se fram emot?
I denna artikel tar vi upp det mest intressanta för oss utvecklare.
Vad är nytt i C# 14?
C# 14 introducerar en rad nya språkfunktioner för att förenkla utvecklarens vardag.
Extension members
ger möjlighet att deklarera både instans‑ och statiska extension‑medlemmar (properties, indexers, operators) som ser ut som om de vore en del av den typ man utökar.
Tidigare kunde man enbart skriva extension‑metoder. I C# 14 går det att deklarera både instans‑ och statiska extension‑members. Instans members anropas som om de fanns på själva objekttypen, t.ex. data.IsEmpty, medan statiska medlemmar anropas på typen, t.ex. IEnumerable<int>.Combine(a,b)
Null‑conditional assignment
?. och ?[] kan användas på vänster sida om en (eller är det ett) assignment, vilket gör att höger sida endast utvärderas om vänstra sidan inte är null.
Här är ett exempel:
Customer? customer = TryGetCustomer();
// Före C# 14
if (customer is not null)
{
customer.Order = GetCurrentOrder();
}
// Nu
customer?.Order = GetCurrentOrder(); // Höger sida körs bara om customer != null
orders?[i] += delta; // Compound assignment fungerar
Field backed properties
gör att man kan skriva en accessor‑body utan behovet av att behöva deklarera en private property.
C# innan:
private string _msg;
public string Message
{
get => _msg;
set => _msg = value ?? throw new ArgumentNullException(nameof(value));
}
C# 14:
public string Message
{
get;
set => field = value ?? throw new ArgumentNullException(nameof(value));
}
public int Count
{
get => field;
private set => field = Math.Max(0, value);
}
Implicit konvertering mellan Span<T>, ReadOnlySpan<T> och arrayer
vilket gör att språket känner igen vanliga konverteringar så att man kan skicka strängar och arrayer till metoder som tar spans utan att kalla AsSpan()
Modifiers på lambda‑parametrar
C# 14 tillåter modifierare som ref, in, out, scoped eller ref readonly på lambda‑parametrar utan att man anger typer.
delegate bool TryParse<T>(string text, out T result);
TryParse<int> parse = (text, out result) => int.TryParse(text, out result);
Tidigare var man tvungen att specificera datatyper på alla parametrar när man använde modifierare.
TryParse<int> parse2 = (string text, out int result) => Int32.TryParse(text, out result);
Nyheterna i .NET 10
.NET 10 är en LTS‑release som kommer att stödjas i tre år och som uppdaterar runtime, bibliotek och utvecklingsverktyg. Men redan nu kan man ladda hem och köra .NET 10.
.NET Runtime
Runtime har fått sig en uppdatering där JIT‑kompilatorn har förbättrats med bättre inlining, metod‑devirtualisering och mer effektiv stackallokering.
.NET‑biblioteken
Biblioteken i .NET 10 innehåller nya API:er för kryptografi, globalisering, numerik, serialisering och diagnostik
-
JSON‑serialisering har nu inställningar för att förbjuda duplicate properties och har strikta serialiseringslägen. Det finns också stöd för att använda PipeReader med System.Text.Json
-
Nätverksbiblioteken har fått stöd för WebSocketStream och det finns TLS 1.3‑stöd på macOS. Processhanteringen kan nu isolera processgrupper på Windows.
.NET SDK
-
SDK:n innehåller nu stöd för det nya testramverket Microsoft.Testing.Platform
-
Console‑applikationer kan nu bygga container‑images direkt med CLI:t och det finns en property för att ange formatet på container‑images.
ASP.NET Core och övriga plattformar
-
ASP.NET Core 10.0 introducerar förbättringar för Blazor, OpenAPI och Minimal API:s, inklusive preloading av Blazor WebAssembly, förbättrad formvalidering, förbättrade diagnostikverktyg och passkey‑stöd för Identity
-
.NET MAUI får förbättrad fil‑ och bildval via MediaPicker, där man nu kan välja flera filer åt gången och möjlighet att komprimera bilder.
-
EF Core 10 lägger till LINQ‑förbättringar, prestandaoptimeringar och stöd för flera query‑filter per entitet. Stödet för Cosmos DB har också förbättrats.
-
Windows Forms och WPF får kvalitets- och prestandaförbättringar.
Sammanfattning
Släppet av C# 14 och .NET 10 är inte revolutionerande men det finns en del praktiska förbättringar. Språknyheterna, extension members till field‑backed properties hjälper dig att skriva renare kod med mindre boilerplate. Samtidigt levererar .NET 10 förbättringar i runtime, bibliotek och verktyg som ger högre prestanda, bättre säkerhet och smidigare utvecklarupplevelse. Nu är det bara att uppgradera och börja ta del av fördelarna!

Skriven av
Markus Lundberg
Läs mer om Data & Integrations

Data & Integrations · Markus Lundberg
Azure Integration Services, nyckeln till moderna integrationer
Azure Integration Services bygger bron mellan äldre system och moln- och AI-världen. Så automatiserar du integrationerna med Microsofts verktygslåda.
Läs mer
Data & Integrations · Markus Lundberg
Azure Events, hur man tar kontroll över sin Azure-miljö.
Vem skapar nya resurser och vilka certifikat går snart ut? Med Azure Events får du koll i realtid och kan agera automatiskt när något händer.
Läs mer
Data & Integrations · Markus Lundberg
Säkra integrationer mot Dynamics 365 Business Central
Så integrerar du säkert med Dynamics 365 Business Central: en Azure Function som läser ordrar från Service Bus och importerar via BC-API:t.
Läs mer