C# 言語定義では、標準ライブラリに特定の型と、それらの型に対する特定のアクセス可能なメンバーが必要です。 コンパイラは、さまざまな言語機能に対してこれらの必要な型とメンバーを使用するコードを生成します。 このため、C# バージョンは、対応する .NET バージョン以降でのみサポートされます。 これにより、正しい実行時の動作と、必要なすべての型とメンバーの可用性が保証されます。
標準ライブラリ機能へのこの依存関係は、最初のバージョン以降、C# 言語の一部となっています。 そのバージョンには、次の例が含まれています。
その最初のバージョンは単純でした。コンパイラと標準ライブラリは一緒に出荷され、それぞれのバージョンは 1 つだけでした。
以降のバージョンの C# では、新しい型またはメンバーが依存関係に追加される場合があります。 たとえば、INotifyCompletion、CallerFilePathAttribute、CallerMemberNameAttribute などがあります。 C# 7.0 では、ValueTuple言語機能を実装するためにへの依存関係が追加されました。 C# 8 では、範囲やインデックスなどの機能のSystem.IndexとSystem.Rangeが必要です。 新しいバージョンごとに、追加の要件が追加される場合があります。
言語設計チームは、準拠している標準ライブラリで必要な型とメンバーの表面領域を最小限に抑えるために取り組んでいます。 この目標は、新しいライブラリ機能が言語にシームレスに組み込まれるクリーンな設計とバランスが取れています。 将来のバージョンの C# には、標準ライブラリの新しい型とメンバーを必要とする新機能が追加される予定です。 C# コンパイラ ツールが、サポートされているプラットフォーム上の .NET ライブラリのリリース サイクルから切り離されるようになりました。
.NET