语言功能与库类型之间的关系

C# 语言定义要求标准库拥有某些类型以及这些类型的特定可访问成员。 编译器针对多种不同语言功能生成使用这些必需类型和成员的代码。 因此,C# 版本仅支持相应的 .NET 版本和更新版本。 这可确保正确的运行时行为以及所有必需类型和成员的可用性。

此标准库功能的依赖项自其第一个版本起就是 C# 语言的一部分。 在该版本中,相关示例包括:

  • Exception - 用于编译器生成的所有异常。
  • String - string 的同义词。
  • Int32 - int 的同义词。

第一个版本很简单:编译器和标准库一起提供,且各自都只有一个版本。

后续版本的 C# 偶尔会向依赖项添加新类型或成员。 相关示例包括:INotifyCompletionCallerFilePathAttributeCallerMemberNameAttribute。 C# 7.0 在 ValueTuple 上添加了一个依赖项来实现元组语言功能。 C# 8 对于范围和索引需要 System.IndexSystem.Range 以及其他功能。 每个新版本可能会添加其他要求。

语言设计团队致力于最小化符合标准的标准库所需的类型和成员的外围应用。 该目标针对新库功能无缝集成到语言的简洁设计进行了平衡。 未来版本的 C# 中还会包括需要标准库中的新类型和成员的新功能。 C# 编译器工具现在从支持的平台上 .NET 库的发布周期分离。