- Vårt erbjudande
- Kundcase
- Insikter & Inspiration
- Om oss
/ Data & Integrations /
Nyheterna i C# 14 och .NET 10
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!
