語言功能和程式庫類型之間的關聯性

C# 語言定義要求標準程式庫具有特定類型和這些類型的特定可存取成員。 編譯器產生的程式碼會將這些必要的類型和成員用在許多不同的語言功能。 基於這個原因,只有對應的 .NET 版本和更新版本才支援 C# 版本。 這可確保正確的執行階段行為和所有必要的類型和成員的可用性。

這種對標準程式庫功能的相依性,自其第一版本開始已成為 C# 語言的一部分。 該版本包含的範例如下:

  • Exception - 用於所有編譯器產生的例外狀況。
  • String - string 的同義字。
  • Int32 - int 的同義字。

第一個版本很簡單:編譯器和標準程式庫一起出貨,各只有一個版本。

後續的 C# 版本偶爾會在相依性中新增新的類型或成員。 範例包括:INotifyCompletionCallerFilePathAttributeCallerMemberNameAttribute。 C# 7.0 在 ValueTuple 上新增了相依性以實作 Tuple 語言功能。 C# 8 需要 System.IndexSystem.Range 來支援範圍和索引,以及其他功能。 每個新版本可能會新增其他需求。

語言設計小組努力將相容標準程式庫中所需類型和成員的介面區縮減至最小。 該目標與新程式庫功能順利併入到語言的全新設計平衡。 未來的 C# 版本中會有在標準程式庫中需要新類型和成員的新功能。 C# 編譯器工具現在已從受支援平台上的 .NET 程式庫發行週期中分離出來。