=

Kde můžeme používat C# 9.0

V závěru roku 2020 Microsoft vydal aktualizovanou sadu vývojářských nástrojů, která zahrnuje mimo jiné novou verzi runtime, nové verze frameworků, kompileru i samotného jazyka C# 9.0. Podpora jednotlivých verzí jazyka v různých verzích vývojářského stacku se stala součástí mnoha diskusí a netřeba zdůraznit, že drtivá většina příspěvků je silně zavádějících.

Verzování vývojářského stacku

Hledáte-li osvědčené řešení, jak se z verzování produktů Microsoftu nezbláznit, jednoduše se držte vždy kompletního technologického balíčku, který Microsoft vydává. Plán je takový, že by se tak mělo dít vždy na podzim, zhruba v listopadu. Využitím celé sady nově vydaných nástrojů získáte maximální vzájemnou kompatibilitu. Součástí nové sady nástrojů je obvykle i nová verze jazyka C#. Tu by měl vývojář v ideálním případě používat pouze v novém stacku. S vydáním .NET 5 lze tedy využívat veškeré schopnosti jazyka C# 9.0.

Těžký úděl sí-šarpu

Kód, který vývojář napíše v jazyce C# je nutné kompilovat do MSIL assemblies. Těmto assemblies musí rozumět následně runtime. A i když jim runtime rozumí a umí je provést, ještě pořád je zde riziko, že prováděný kód spadne za běhu ve chvíli, kdy bude chtít pracovat s nějakým specifickým typem, který v určité verzi frameworku chybí.

Příkladem potíží s kompatibilitou jsou drobná vylepšení jazyka (například record types v C# 9.0). Použije-li vývojář tuto funkci, musí mít novou verzi kompileru, který dokáže vygenerovat bez potíží IL kód. Provedení samotného IL kódu už ale zvládne provést i starší verze runtime.

Jako vývojář tedy mohu použít C# 9.0 i v .NET Core 3.1 projektech, avšak s řadou omezení. Stejná situace platila i v případě jazyka C# 8.0 a jeho použití v .NET Core 2.1 projektech, potažmo v NET Standard 2.0 knihovnách.

C# 9.0 nabízí mnoho

Dobrá zpráva je, že jazyk C# 9.0 nabízí mnoho funkcionalit, které nevyžadují novou verzi runtime ani dodatečných typů. Jinými slovy si lze C# 9.0 do velké míry vychutnat i v .NET Core 3.1 aplikacích a lze jej při jisté opatrnosti používat i pro vývoj NuGet balíčků targetovaných na NET Standard 2.1. Zde je však nutná obezřetnost, eventuelně dvojí implementace pro různé TFM. Některé funkcionality vývojář k dispozici nemá a musí se bez nich obejít nebo jim zajistit podporu například skrze NuGet balíčky. Příklad mohou být record types, IAsyncEnumerable, IAsyncDisposable a další.

Přestože C# 9.0 si najde své místo i v .NET Core 3.1 projektech, osobně nevidím důvod otálet s relativně jednoduchým přechodem na verzi .NET 5. Kromě nových funkcionalit jazyka lze získat lepší performance a otevřít si cestu k tzv. "nullable rollout phase". Jeremy Likness konkrétně doporučuje: "Pro minimalizaci dopadu změn doporučuji, abychom rok 2021 považovali za zaváděcí fázi, v rámci které budeme přecházet na nullable reference types. Od listopadu 2021 mohou být projekty v novém normálu s nullable reference types jakožto výchozím nastavením".

Podpora .NET 5 prodloužena až do února 2022

V závěru se hodí zmínit, že Microsoft prodloužil podporu pro .NET 5 až do února 2022. Standardní 3 měsíční support tedy upravil pro aktuální .NET 5 tak, že poběží od vydání příští LTS verze (.NET 6). Změna neobsahuje výjimky a měla by se vztahovat i na aplikace napsané v Blazor WebAssembly. Zda se Blazor WASM dočká příští rok LTS zatím stále není zřejmé.

Miroslav Holec

Miroslav Holec

14. 12. 2020


Videa

RestApi.CZ

Právě jsem spustil průvodce Designem REST API

📖 Přečíst restapi.cz

Veřejná školení Místo Datum Délka Cena bez DPH Poznámky
Novinky v .NET 6 a C# 10 online 13. 10. 2022 1 den 3 900 Kč poslední šance registrovat
Vývoj aplikací v ASP.NET Core Praha + online 11/2022 1 den 4 900 Kč bestseller registrovat
Blazor Server & WebAssembly Praha + online 11/2022 2 dny 10 900 Kč registrovat
ASP.NET Core gRPC Praha + online 11/2022 1 den 4 900 Kč registrovat
Design REST API a Design First Praha + online 11/2022 2 dny 9 900 Kč exkluzivní registrovat
Vývoj REST API s Minimal APIs Praha + online 11/2022 1 den 5 900 Kč exkluzivní registrovat
Vývoj REST API v .NET MVC Praha + online 11/2022 1 den 4 900 Kč bestseller registrovat
Entity Framework Core Praha + online 11/2022 2 dny 11 900 Kč registrovat
Vývoj .NET aplikací pro Azure Praha + online 11/2022 1 den 5 900 Kč nový registrovat

kontakt zde

Dotazy, poptávky a objednávky

mirek@miroslavholec.cz
Loading