5 一致性
符合性对以下受众感兴趣:
- 这些设计、实现或维护 C# 实现。
- 希望采购 C# 实现的政府实体或商业实体。
- 希望提供 C# 一致性测试套件的测试组织。
- 希望将代码从一个 C# 实现移植到另一个 C# 实现的程序员。
- 希望教标准 C# 的教育工作者。
- 想写标准 C# 的作者。
因此,一致性非常重要,并且大部分此规范旨在指定使 C# 实现和 C# 程序符合一致性的特征。
此规范中的指定要求的文本被视为规范。 此规范中的所有其他文本都是 信息性的;也就是说,仅用于信息目的。 除非另有说明,否则所有文本都是规范性的。 规范性文本进一步分为 必需 和 条件 类别。 有条件的 规范文本指定特征及其可选功能的要求。 但是,如果提供了该功能,则其语法和语义应完全按指定方式指定。
此规范中仅由“未定义的行为”一词指示未定义的行为。
严格合规的程序应仅使用此规范中指定的语言的这些功能。 (这意味着一个严格合规的程序不能使用任何有条件的规范性特征。它不应生成依赖于任何未指定、未定义或实现定义行为的输出。
C# 的符合性实现应接受任何严格合规的程序。
C# 的一致实现应提供和支持此规范中规范(但不是有条件规范)部分中所述的所有类型、值、对象、属性、方法和程序语法和语义。
符合 C# 的实现应解释符合 Unicode 标准的字符。 符合的实现应接受使用 UTF-8 编码形式编码的编译单元。
C# 的符合性实现不应成功转换包含 #error 预处理指令的源,除非它是条件编译跳过的组的一部分。
如果源程序违反任何语法规则或任何负面要求(定义为“应”或“不应”或“错误”或“警告”要求),则 C# 的一致实现应至少生成一条诊断消息,除非该要求标有“不需要诊断”字样。
允许 C# 的符合性实现提供超出此规范中所述的其他类型、值、对象、属性和方法,前提是它们不会改变任何严格符合程序的行为。 需要符合符合的实现来诊断使用不符合此规范的扩展的程序。 但是,完成此操作后,他们可以编译和执行此类程序。 (具有扩展的功能意味着一个符合性的实现不保留在此规范中显式保留的标识符除外)。
C# 的符合性实现应随附一个定义所有实现定义特征和所有扩展的文档。
C# 的符合性实现应支持附件 C 中记录的类库。此库由此规范中的引用包含。
一个 符合性的程序是一个符合性实现可接受的程序 。 (允许此类计划包含扩展或有条件的规范性特征。