インターフェイスで宣言された静的抽象メンバー

.NET 6 のプレビューの新機能で、static インターフェイス メンバーを abstract としてマークできるようになりました。 この機能には、以前は違法と見なされていた中間言語 (IL) メタデータ パターンを許可するための ECMA 335 仕様へのいくつかの変更が含まれます。 詳細については、dotnet/runtime#49558 を参照してください。

以前の動作

静的インターフェイスが abstract としてマークされた場合:

  • C# コンパイラによって、エラー CS0112 が生成されました。
  • ツールおよびその他のコンパイラによって、違法な IL メタデータが生成されました。

新しい動作

.NET 6 以降、静的インターフェイス メンバーを abstract としてマークし、正常にコンパイルできるようになりました。 さらに、生成される IL メタデータ パターンは、ECMA 335 仕様の変更により、合法である見なされるようになりました。

static abstract インターフェイス メンバーの実装は、インターフェイスを実装する型によって提供されます。

注意

.NET 6 の場合、インターフェイス メンバーを static abstract としてマークできるようにするには、プロジェクトのプレビュー機能を有効にする必要があります。

これは新たに合法となった IL パターンであるため、既存のツールが、関連付けられているメタデータを誤って処理し、予期しない動作が発生する可能性があります。 static abstract メンバーを持つインターフェイスが、System.Int32 など、プリミティブ型に表示されるようになったため、ツールが新しいメタデータ パターンに遭遇する可能性があります。

導入されたバージョン

.NET 6

破壊的変更の種類

この変更は、バイナリの互換性に影響を与える可能性があります。

変更理由

この変更は、静的メンバーを抽象化し、それらの静的メンバーを定義する型間で適用される一般化されたコードを記述する方法がなかったために導入されました。 これは、静的フォームにのみ存在するメンバーの種類 (演算子など) で特に問題がありました。

.Net バイナリまたは C# ソース コードを使用するツールを更新して、現在 .NET プリミティブ型に存在するものを含め、static abstract インターフェイス メンバーの新しい概念を考慮してください。

影響を受ける API

N/A

関連項目