다음을 통해 공유


로컬 함수의 특성

메모

이 문서는 기능 사양입니다. 사양은 기능의 디자인 문서 역할을 합니다. 여기에는 기능 디자인 및 개발 중에 필요한 정보와 함께 제안된 사양 변경 내용이 포함됩니다. 이러한 문서는 제안된 사양 변경이 완료되고 현재 ECMA 사양에 통합될 때까지 게시됩니다.

기능 사양과 완료된 구현 간에 약간의 불일치가 있을 수 있습니다. 이러한 차이는관련 LDM(언어 디자인 모임) 노트에서 캡처됩니다.

사양문서에서 C# 언어 표준에 기능 사양서를 채택하는 과정에 대해 자세히 알아볼 수 있습니다.

챔피언 이슈: https://github.com/dotnet/csharplang/issues/1888

특성

이제 로컬 함수 선언에 특성(§22)이 허용됩니다. 로컬 함수의 매개 변수 및 형식 매개 변수도 특성을 가질 수 있습니다.

메서드, 해당 매개 변수 또는 해당 형식 매개 변수에 적용할 때 지정된 의미를 가진 특성은 각각 로컬 함수, 해당 매개 변수 또는 해당 형식 매개 변수에 적용할 때 동일한 의미를 갖습니다.

로컬 함수에 를 사용하여 조건부 메서드([ConditionalAttribute])와 같은 의미에서 조건부로 설정할 수 있습니다. 조건부 로컬 함수도 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
    | ';'
    ;