September 16, 2024

Wat is er nieuw in C# 13: verbeterde parameters, prestatieverbeteringen en nieuwe extensietypen

Wat is er nieuw in C# 13: verbeterde parameters, prestatieverbeteringen en nieuwe extensietypen

Vorige week tijdens Microsoft-build 2024Microsoft heeft aangekondigd wat er nieuw is Voordelen C#13, de nieuwste versie van de beroemde programmeertaal .NET. Als de meest opvallende verbeteringen aan de docenten Er zijn parameters en nieuwe extensietypes aangekondigd en de release bevat verschillende prestatie- en geheugenverbeteringen voor .NET-ontwikkelaars.

In C#13, de docenten Trefwoord Het is niet langer beperkt tot arrays. Wanneer gebruikt vóór de parameter, de docenten Hiermee kan de methode een door komma's gescheiden lijst accepteren die nul of meer waarden bevat, die in een array van het opgegeven type worden geplaatst.

nu, de docenten Het parametertype kan elk groepstype zijn dat compatibel is met groepsexpressies, b.v de lijst, Rekken En talloze . Het is opmerkelijk dat aangepaste groepstypen ook kunnen worden gebruikt als ze specifieke richtlijnen volgen.


void PrintList(params IEnumerable<string> list) 
    => Console.WriteLine(string.Join(", ", list));

PrintList("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat");

// prints "Sun, Mon, Tue, Wed, Thu, Fri, Sat"

Bovendien waren prestatieverbeteringen een belangrijk aandachtspunt in C# 13, vooral bij het gebruik van System.Span Het System.ReadOnlySpanWat, zoals we al zeiden, helpt verminderen Geheugentoewijzingen.

Nu worden de waarden die aan de params-parameter worden doorgegeven impliciet geconverteerd naar het extensietype, wat er, zoals gerapporteerd, voor zorgt dat de meest efficiënte methode wordt geselecteerd, vooral wanneer de overbelaste methoden variëren afhankelijk van de extensie of het array-gebruik.

de Officiële blog In de circulaire staat:

Veel .NET Runtime-methoden zijn bijgewerkt om Span-parameters te accepteren, zodat uw applicaties sneller werken, zelfs als u de extensies niet rechtstreeks gebruikt. Dit maakt deel uit van onze voortdurende inspanningen om C# sneller en betrouwbaarder te maken. Het is ook een voorbeeld van de zorg die we besteden om ervoor te zorgen dat verschillende C#-functies goed samenwerken.

C# 13 is ook verbeterd de docenten Interface-ondersteuning. Wanneer een interface als parametertype wordt opgegeven, worden de vereisten voor elk implementatietype aangegeven. De compiler kan het best beschikbare type kiezen dat aan de interface voldoet, mogelijk door gebruik te maken van een bestaand type of er indien nodig een te creëren.

Zoals u ziet zorgt dit ontwerp ervoor dat de afhankelijkheid van het basistype betonbatch wordt geminimaliseerd, wat flexibiliteit en optimalisatie mogelijk maakt. Het vermogen van de compiler om het optimale betontype te bepalen bij het doorgeven van een lijst met waarden of verzamelingsexpressie verhoogt de efficiëntie en het aanpassingsvermogen van de code.

Aankondiging van toekomstige toevoeging heeft betrekking op Soorten extensies Dit wordt in C# 13 uitgebreid door aanvullende methoden, eigenschappen en leden voor basistypen aan te bieden. Deze extensietypen kunnen impliciet zijn, van toepassing op alle exemplaren van het basistype, of expliciet, en alleen van toepassing op exemplaren die expliciet zijn geconverteerd naar het extensietype.

De oorspronkelijke aankondigingsblogpost ontving een aantal interessante gedachten over verbeteringen en suggesties voor de C#-taal, en op basis van de verschillende threads en forums was de algehele feedback van de community positief, met opmerkingen en opwinding over extensietypes, wat een community lijkt te zijn -geliefde functie.

De officiële Microsoft Build-website plaatste ook de sessie-opname met de titel Wat is er nieuw in C#13? Het wordt ten zeerste aanbevolen voor ontwikkelaars om te kijken. Andere C#-toevoegingen hebben betrekking op het nieuwe lock-object, nieuwe escape-reeksen, het natuurlijke type van de methodegroep en impliciete indextoegang

Ten slotte kunnen lezers meer vinden over de C# 13-functies die beschikbaar zijn op de site Officiële taaldocumentatie bladzijde.