.NET 5 の新機能

.NET 5.0 は、.NET Core 3.1 の次のメジャー リリースです。 この新しいリリースは、次の 2 つの理由から .NET Core 4.0 ではなく、.NET 5.0 と名付けられています。

  • バージョン番号 4.x は、NET Framework 4.x との混同を避けるために省略しました。
  • 以降の .NET の主要な実装であることを強調するために、名前から "Core" を削除しました。 .NET 5.0 では、.NET Core または .NET Framework よりも多くの種類のアプリと多くのプラットフォームをサポートしています。

ASP.NET Core 5.0 は .NET 5.0 に基づいていますが、ASP.NET MVC 5 との混同を避けるために、"Core" という名前を引き続き使用しています。 同様に、Entity Framework Core 5.0 も、Entity Framework 5 および 6 との混同を避けるために、"Core" という名前を引き続き使用しています。

.NET 5.0 には、.NET Core 3.1 と比較し、次の機能強化と新機能があります。

.NET 5.0 は .NET Framework の後継ではない

.Net 5.0 は今後の .NET の主要な実装であり、.NET Framework 4.x は引き続きサポートされます。

次のテクノロジを .NET Framework から .NET 5.0 に移植する予定はありませんが、.NET 5.0 には代替手段があります。

テクノロジ 推奨される代替手段
Web フォーム ASP.NET Core Blazor または Razor Pages
Windows Workflow (WF) オープンソース CoreWF または Elsa ワークフロー

Windows Communication Foundation

元の Windows Communication Foundation (WCF) の実装は、Windows でのみサポートされていました。 ただし、クライアント ポートが .NET Foundation から提供されています。 これは、完全にオープンソースであり、クロス プラットフォームで、Microsoft でサポートされています。 コア NuGet パッケージの一覧は次のとおりです。

前述のクライアント ライブラリを補完するサーバー コンポーネントは、コミュニティで管理されています。 この GitHub リポジトリは、Corewcf にあります。 このサーバー コンポーネントは、Microsoft では正式にサポートされて いません。 WCF の代わりに、gRPC を使用することを検討してください。

.NET 5.0 は .NET Standard の後継ではない

新しいアプリケーションを開発する場合、net5.0 ターゲット フレームワーク モニカー (TFM) を、クラス ライブラリを含むすべての種類のプロジェクトに指定できます。 net5.0 TFM を使用するだけで、簡単に .NET 5 とワークロードを共有できます。

.NET 5.0 アプリおよびライブラリでは、netcoreappnetstandard の TFM の組みが net5.0 ターゲット フレームワーク モニカー (TFM) に置き換わっています。 ただし、.NET Framework、.NET Core、および .NET 5 の各ワークロードと同じコードを使用する予定の場合は、netstandard2.0 をお使いの TFM として指定します。 詳細については、「.NET Standard」をご覧ください。

C# の更新

.NET 5 アプリを記述する開発者は、C# の最新バージョンと機能を使用できます。 .NET 5 は、この言語に多数の新機能が取り入れられた C# 9 とペアになっています。 次にいくつか主要なものを紹介します。

  • レコード: 値ベースの等値セマンティクスを使用する参照型と、新しい with 式でサポートされる非破壊的な変化。

  • リレーショナル パターン マッチング: 論理パターン (andornot の新しいキーワード) を含む比較評価および式のための、パターン マッチング機能の関係演算子への拡張。

  • 最上位レベルのステートメント: C# の採用と学習を加速するために、Main メソッドを省略でき、次のような単純なアプリケーションが許可されています。

    System.Console.Write("Hello world!");
    
  • 関数ポインター: ldftn および calli の中間言語 (IL) オペコードを公開する言語構成要素。

利用可能な C# 9 の機能の詳細については、「C# 9 の新機能」を参照してください。

ソース ジェネレーター

開発者のプロジェクトでは、C# のいくつかの主要な新機能に加え、ソース ジェネレーターが使用されるようになっています。 ソース ジェネレーターを使用すると、コンパイル時に実行されるコードでお使いのプログラムを検査して、お使いのコードの残りの部分と共にコンパイルされる追加のファイルを生成できます。

ソース ジェネレーターの詳細については、「Introducing C# source generators」 (C# のソース ジェネレーターの概要)、および C# のソース ジェネレーターのサンプルに関するページを参照してください。

F# の更新

F# は .NET の関数型のプログラミング言語であり、.NET 5 で開発者は、F# 5 を使用できます。 F# 5 の新機能をいくつか紹介します。

挿入文字列

C# の補間文字列と同様に、また JavaScript でも、F# で基本の文字列補間がサポートされています。

let name = "David"
let age = 36
let message = $"{name} is {age} years old."

基本の文字列補間に加え、型指定の補間があります。 型指定の補間では、指定した型が書式指定子と一致する必要があります。

let name = "David"
let age = 36
let message = $"%s{name} is %d{age} years old."

これは、タイプセーフな入力に基づいて文字列を書式設定する sprintf 関数と似ています。

Visual Basic の更新

.NET 5 の Visual Basic には、新しい言語機能がありません。 しかし、.NET 5 の Visual Basic では、次もサポートしています。

説明 dotnet new パラメーター
コンソール アプリケーション console
クラス ライブラリ classlib
WPF アプリケーション wpf
WPF クラス ライブラリ wpflib
WPF カスタム コントロール ライブラリ wpfcustomcontrollib
WPF ユーザー コントロール ライブラリ wpfusercontrollib
Windows フォーム (WinForms) アプリケーション winforms
Windows フォーム (WinForms) クラス ライブラリ winformslib
単体テスト プロジェクト mstest
NUnit 3 テスト プロジェクト nunit
NUnit 3 テスト項目 nunit-test
xUnit テスト プロジェクト xunit

.NET CLI のプロジェクト テンプレートの詳細については、「dotnet new」を参照してください。

System.Text.Json の新機能

System.Text.Js に、またこれを対象とした新機能があります。

関連項目