次の方法で共有


ローカル関数の属性

手記

この記事は機能仕様です。 仕様は、機能の設計ドキュメントとして機能します。 これには、提案された仕様の変更と、機能の設計と開発時に必要な情報が含まれます。 これらの記事は、提案された仕様の変更が最終決定され、現在の 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
    | ';'
    ;