.NET 5 の新機能
.NET 5 は、3.1 に続く .NET Core の次のメジャー リリースです。 このリリースでは、次の 2 つの理由から、.NET Core 4 の代わりに .NET 5 という名前が付けられました。
- .NET Framework 4.x との混乱を避けるため、バージョン番号 4.x はスキップされました。
- "Core" は、これが今後の .NET の主要な実装であることを強調するために、名前から削除されました。 .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 ワークフロー (WF) | エルザワークフロー |
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
Target Framework モニカー (TFM) を指定できます。 .NET 5 ワークロード間でのコードの共有が簡素化されました。必要なのは、net5.0
TFM です。
.NET 5 アプリとライブラリの場合、net5.0
TFM は、netcoreapp
と netstandard
の TFM を結合して置き換えます。 ただし、.NET Framework、.NET Core、および .NET 5 ワークロード間でコードを共有する予定の場合は、TFM として netstandard2.0
を指定します。 詳細については、「.NET Standard」を参照してください。
C# の更新
.NET 5 アプリを作成する開発者は、最新の C# バージョンと機能にアクセスできます。 .NET 5 は C# 9 とペアになっています。これにより、多くの新機能が言語に追加されます。 いくつかのハイライトを次に示します。
レコード: 値ベースの等値セマンティクスを使用する参照型と、新しい
with
式でサポートされる非破壊的な変化。リレーショナル パターン マッチング: 比較評価と式 (論理パターンを含む)、新しいキーワード
and
、or
、not
など、パターン マッチング機能を関係演算子に拡張します。最上位レベルのステートメント: C# の導入と学習を促進する手段として、
Main
メソッドを省略でき、次の例のような単純なアプリケーションが有効です。System.Console.Write("Hello world!");
関数ポインター: 次の中間言語 (IL) オペコードを公開する言語コンストラクト:
ldftn
とcalli
。
使用可能な C# 9 機能の詳細については、「C# 9の新機能」を参照してください。
ソース ジェネレーター
強調表示された新しい C# 機能の一部に加えて、ソース ジェネレーターは開発者プロジェクトに移行しています。 ソース ジェネレーターを使用すると、コンパイル中に実行されるコードでプログラムを検査し、残りのコードと共にコンパイルされる追加のファイルを生成できます。
ソース ジェネレーターの詳細については、「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.Jsonには、次の新機能があります。
- 参照を保持し、循環参照を処理
- HttpClient でのシリアル化拡張メソッド
- 引用符で囲まれた数値を許可または書き込む
- 不変型と C# 9 レコード のサポート
- パブリックでないプロパティ アクセサーのサポート
- フィールドのサポート
- プロパティ を条件付きで無視する
- 文字列以外のキー ディクショナリのサポート
- カスタム コンバーターが null を処理できるようにする
- JsonSerializerOptions のコピー
- Web の既定値を使用して JsonSerializerOptions を作成
関連項目
.NET