本地函数的属性
注意
本文是特性规范。 此规范是功能的设计文档。 它包括建议的规范变更,以及功能设计和开发过程中所需的信息。 这些文章将持续发布,直至建议的规范变更最终确定并纳入当前的 ECMA 规范。
功能规范与已完成的实现之间可能存在一些差异。 这些差异记录在相关的语言设计会议 (LDM) 说明中。
可以在有关规范的文章中了解更多有关将功能规范子块纳入 C# 语言标准的过程。
支持者问题:https://github.com/dotnet/csharplang/issues/1888
特性
现在允许本地函数声明具有属性 (§22)。 本地函数上的参数和类型参数也可以具有属性。
应用于方法、方法参数或方法类型参数时具有指定含义的属性,在应用于本地函数、本地函数参数或本地函数类型参数时将分别具有相同的含义。
可以通过使用 修饰局部函数,使其具有与条件方法([ConditionalAttribute]
)相同的条件特性。 条件局部函数还必须为 static
。 对条件方法的所有限制也适用于条件本地函数,包括返回类型必须是 void
。
Extern
本地函数现在允许使用 extern
修饰符。 这将本地函数视为外部函数,与外部方法(§15.6.8)具有相同的外部性。
与外部方法类似,外部局部函数的 local-function-body 必须是分号。 仅允许在外部本地函数上使用分号 local-function-body。
外部本地函数还必须为 static
。
语法
local-function-header
: attributes? local-function-modifiers? return-type identifier type-parameter-list?
( formal-parameter-list? ) type-parameter-constraints-clauses
;
local-function-modifiers
: (async | unsafe | static | extern)*
;
local-function-body
: block
| arrow-expression-body
| ';'
;