Hem/Insikter & Inspiration/Nyheterna i C# 14 och .NET 10
Nyheterna i C# 14 och .NET 10
/ 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

  • 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!


Author-image

Skrivet av:

Markus Lundberg
markus@wizardworks.se

Du kanske också gillar

Håll dig uppdaterad om våra spännande projekt och bli en del av vår resa mot en mer digital och magisk värld!

Wizardworks AB, 559444-4571, Redaregatan 48, 252 36 Helsingborg, Skåne