.NET 5 の新機能
.NET 5 は、.NET Core 3.1 の次のメジャー リリースです。 この新しいリリースは、次の 2 つの理由から .NET Core 4 ではなく、.NET 5 と名付けられています。
- バージョン番号 4.x は、NET Framework 4.x との混同を避けるために省略しました。
- 以降の .NET の主要な実装であることを強調するために、名前から "Core" を削除しました。 .NET 5 では、.NET Core または .NET Framework よりも多くの種類のアプリと多くのプラットフォームをサポートしています。
ASP.NET Core 5.0 は .NET 5 に基づいていますが、ASP.NET MVC 5 との混同を避けるために、"Core" という名前を引き続き使用しています。 同様に、Entity Framework Core 5.0 も、Entity Framework 5 および 6 との混同を避けるために、"Core" という名前を引き続き使用しています。
.NET 5 には、.NET Core 3.1 と比較して、次の機能強化と新機能があります。
- C# の更新
- F# の更新
- Visual Basic の更新
- System.Text.Json の新機能
- 単一ファイル アプリ
- アプリのトリミング
- Windows Arm64 および Arm64 組み込み
- ダンプ デバッグでのツールのサポート
- ランタイム ライブラリの 80% に、null 許容参照型の注釈が付けられています
- パフォーマンスの向上:
.NET 5 は .NET Framework の後継ではない
.NET 5 以降のバージョンは今後の .NET の主要な実装ですが、.NET Framework 4.x は引き続きサポートされます。 次のテクノロジを .NET Framework から .NET 5 に移植する予定はありませんが、.NET には代替手段があります。
テクノロジ | 推奨される代替手段 |
---|---|
Web フォーム | ASP.NET Core Blazor または Razor Pages |
Windows Workflow (WF) | Elsa ワークフロー |
Windows Communication Foundation
元の Windows Communication Foundation (WCF) の実装は、Windows でのみサポートされていました。 ただし、クライアント ポートが .NET Foundation から提供されています。 これは、完全にオープンソースであり、クロス プラットフォームで、Microsoft でサポートされています。 コア NuGet パッケージの一覧は次のとおりです。
- System.ServiceModel.Duplex
- System.ServiceModel.Federation
- System.ServiceModel.Http
- System.ServiceModel.NetTcp
- System.ServiceModel.Primitives
- System.ServiceModel.Security
前述のクライアント ライブラリを補完するサーバー コンポーネントは、CoreWCF から入手できます。 2022 年 4 月現在、CoreWCF は Microsoft によって正式にサポートされています。 ただし、WCF の代わりに、gRPC を使用することを検討してください。
.NET 5 は .NET Standard の後継ではない
新しいアプリケーションを開発する場合、net5.0
ターゲット フレームワーク モニカー (TFM) を、クラス ライブラリを含むすべての種類のプロジェクトに指定できます。 net5.0
TFM を使用するだけで、.NET 5 ワークロードの間でコードを簡単に共有できます。
.NET 5 アプリおよびライブラリでは、netcoreapp
と netstandard
の TFM の組みが net5.0
TFM に置き換わっています。 ただし、.NET Framework、.NET Core、および .NET 5 の各ワークロードと同じコードを使用する予定の場合は、netstandard2.0
をお使いの TFM として指定します。 詳細については、「.NET Standard」をご覧ください。
C# の更新
.NET 5 アプリを記述する開発者は、C# の最新バージョンと機能を使用できます。 .NET 5 は、この言語に多数の新機能が取り入れられた C# 9 とペアになっています。 次にいくつか主要なものを紹介します。
レコード: 値ベースの等値セマンティクスを使用する参照型と、新しい
with
式でサポートされる非破壊的な変化。リレーショナル パターン マッチング: 論理パターン (
and
、or
、not
の新しいキーワード) を含む比較評価および式のための、パターン マッチング機能の関係演算子への拡張。最上位レベルのステートメント: 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 を使用できます。 新機能の 1 つは補間文字列です。これは、C# のほか JavaScript の補間文字列にも似ています。
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
関数と似ています。
詳細については、「F# 5 の新機能」を参照してください。
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 に、またこれを対象とした新機能があります。
- 参照を保持し、循環参照を処理する
- HttpClient と HttpContent の拡張メソッド
- 引用符で囲まれた数値を許可または記述する
- 不変の型と C# 9 レコードのサポート
- パブリックでないプロパティ アクセサーのサポート
- フィールドのサポート
- プロパティの条件付きでの無視
- ディクショナリでの文字列以外のキーのサポート
- カスタム コンバーターによる null の処理の許可
- JsonSerializerOptions をコピーする
- Web の既定値を使用した JsonSerializerOptions の作成
関連項目
.NET