ローカル関数の属性
手記
この記事は機能仕様です。 仕様は、機能の設計ドキュメントとして機能します。 これには、提案された仕様の変更と、機能の設計と開発時に必要な情報が含まれます。 これらの記事は、提案された仕様の変更が最終決定され、現在の ECMA 仕様に組み込まれるまで公開されます。
機能の仕様と完成した実装の間には、いくつかの違いがある可能性があります。 これらの違いは、関連する 言語設計会議 (LDM) ノートでキャプチャされます。
機能仕様を C# 言語標準に導入するプロセスの詳細については、仕様に関する記事を参照してください。
属性
ローカル関数宣言に属性 (§22) を指定できるようになりました。 ローカル関数のパラメーターと型パラメーターも属性を持つことができます。
メソッド、そのパラメーター、またはその型パラメーターに適用される場合、指定された意味を持つ属性は、ローカル関数、そのパラメーター、またはその型パラメーターにそれぞれ同じ意味を持ちます。
ローカル関数は、条件付きメソッド (§22.5.3) と同じ意味で、[ConditionalAttribute]
で修飾することで条件付きにすることができます。 条件付きローカル関数も static
する必要があります。 条件付きメソッドに対するすべての制限は、戻り値の型を void
する必要があるなど、条件付きローカル関数にも適用されます。
Extern
extern
修飾子がローカル関数で許可されるようになりました。 これにより、外部メソッド (§15.6.8) と同じ意味でローカル関数が外部になります。
外部メソッドと同様に、外部ローカル関数の local-function-body はセミコロンである必要があります。 local-function-body
外部ローカル関数もstatic
である必要があります。
構文
§13.6.4、またはローカル関数 文法 は次のように変更されます。
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
| ';'
;
C# feature specifications