共用方式為


本機函式的屬性

注意

本文是功能規格。 規格可作為功能的設計檔。 其中包含建議的規格變更,以及功能設計和開發期間所需的資訊。 這些文章會發佈,直到提議的規格變更完成並併併入目前的ECMA規格為止。

功能規格與已完成實作之間可能有一些差異。 這些差異在 語言設計會議(LDM)的相關備忘錄中被擷取出來。

您可以在 規格的文章中了解將功能規範納入 C# 語言標準的過程

屬性

現在允許本機函式宣告具有屬性(§22)。 在本地函式中的參數和型別參數也可以具有屬性。

當套用至方法、其參數或其型別參數時,具有指定意義的屬性,在分別套用至區域函式、其參數或其類型參數時,其意義會相同。

使用 [ConditionalAttribute]來裝飾可以使區域函式變成條件式,這與設定條件方法(§22.5.3)的方式相同。 條件式本機函式也必須 static。 條件式方法的所有限制也適用於條件式區域函式,包括傳回型別必須 void

Extern

現在本機函式允許使用 extern 修飾詞。 這使得本地函式在某種意義上與外部方法(§15.6.8)一樣是外部的。

與外部方法類似,外部本地函式的 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
    | ';'
    ;