Dajbych.net


Co je nového v .NET 6?

, 2 minuty čtení

net2015 logo

.NET 6 dovršuje sjednocení s mobilním a desktopovým vývojem. Zavádí takzvaný Target framework moniker (TFM), který určuje, že projekt cílí na konkrétní SDK. Například cílení pro iOS se zapisuje jako net6.0-ios. Dříve TFM popisoval určitou verzi .NETu, případně jeho klon upravený pro konkrétní platformu. To se ale teď mění. Všechny platformy sdílí jeden .NET a specifické API konkrétních platforem, které je přístupné přes SDK, se uvádí za pomlčkou.

HTTP/3

Webové vývojáře určitě potěší experimentální podpora HTTP/3, protože .NET má v sobě zahrnutou implementaci protokolu QUIC. Ten přináší rychlejší navazování spojení, které se nepřeruší, pokud se zařízení klienta zrovna přepojilo z Wi-Fi sítě na mobilní síť (nebo naopak).

CLI trimming

Common Intermediate Language trimming je věc známá programátorům, kteří znají Xamarin. Používá se celkem běžně ke zmenšení velikosti výsledné aplikace. Její součástí je totiž celý .NET framework, což činí určité obtíže, když se má vaše aplikace pravidelně aktualizovat přes mobilní data. Nepoužívané části frameworku (jednotlivé .dll soubory) se proto v sestavení vynechaly. Teď se jde až na úroveň jednotlivých tříd. Pokud kompilujete pro konkrétní instrukční sadu a používáte tuto funkci, nezapomeňte si pročíst dokumentaci o tom, jak označit kusy kódu tak, aby je kompilátor nevynechal.

Prioritní fronty

Je to trochu zvláštní, ale prioritní fronty jsou součástí .NET až od verze 6. Najdete ji ve známém jmenném prostoru:

using System.Collections.Generic;

var queue = new PriorityQueue<TElement,TPriority>();

Co je nového v C# 10?

Interpolated strings

Vezměme si například sestavování chybové hlášky:

var error = "stack overflow"
var message = string.Format("Error: {0}", error);

Stejnou věc nyní můžeme zapsat jednodušeji:

var error = "stack overflow"
var message = $"Error: {error}";

Ještě si uveďme, jak v takovém řetězci zapsat složené závorky:

var str = $"function showMessage(message) {{ window.alert(message); }}";

Top level statements

Dosud byl každý program v .NETu spouštěn metodou Main ve třídě Program (která ani nemusela být statická). To se teď mění a soubor Program.cs teď nemusí obsahovat ani metodu, ani třídu, ani jmenný soubor. Může vypadat více jako skript:

Console.WriteLine("Hello World!");

Global usings

Program na svém začátku ani nemusí uvádět using System;, protože C# teď podporuje global using. Je to deklarace, která neplatí jen pro konkrétní soubor, ale celý projekt. Důležitou vlastností je, že se tato deklarace přejímá i z SDK, které projekt používá. Takže například Microsoft.NETCore.App vám ke každému souboru v projektu přidá:

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;

Které global usings váš projekt používá se ve Visual Studio dozvíte ve vlastnostech projektu v sekci Global Usings. Můžete si tam další jmenné prostory i přidat. V tom případě se uloží do souboru projektu (.csproj).


Nezapomeňte si také přečíst tradiční souhrn výkonnostních vylepšení.