Aracılığıyla paylaş


Yerel işlevlerdeki öznitelikler

Not

Bu makale bir özellik belirtimidir. Belirtim, özelliğin tasarım belgesi olarak görev alır. Önerilen belirtim değişikliklerini ve özelliğin tasarımı ve geliştirilmesi sırasında gereken bilgileri içerir. Bu makaleler, önerilen belirtim değişiklikleri son haline getirilene ve geçerli ECMA belirtimine dahil edilene kadar yayımlanır.

Özellik belirtimi ile tamamlanan uygulama arasında bazı tutarsızlıklar olabilir. Bu farklılıklar,ilgili dil tasarım toplantısı (LDM) notlarında yakalanır.

Özellik belirtimlerini C# dil standardına benimseme işlemi hakkında daha fazla bilgi edinmek içinbelirtimleri makalesinde bulabilirsiniz.

Şampiyon sorunu: https://github.com/dotnet/csharplang/issues/1888

Öznitelik

Yerel işlev bildirimlerinin artık özniteliklere (§22) sahip olması izin verilir. Yerel işlevlerdeki parametrelerin ve tür parametrelerinin özniteliklere sahip olması da izin verilir.

Bir yönteme, parametrelerine veya tür parametrelerine uygulandığında belirtilen anlamı olan öznitelikler, sırasıyla bir yerel işleve, parametrelerine veya tür parametrelerine uygulandığında aynı anlama gelir.

Yerel bir işlev, koşullu yöntemle (§22.5.3) aynı şekilde koşullu hale getirilebilir ve [ConditionalAttribute]ile süslenebilir. Koşullu yerel işlev de staticolmalıdır. Koşullu yöntemlerdeki tüm kısıtlamalar, dönüş türünün voidolması da dahil olmak üzere koşullu yerel işlevler için de geçerlidir.

Extern

extern değiştiriciye artık yerel işlevlerde izin verilir. Bu, yerel işlevi dış yöntemle aynı anlama getirir (§15.6.8).

Dış yönteme benzer şekilde, bir dış yerel işlevin yerel işlev gövdesi noktalı virgül olmalıdır. Ancak dış yerel bir işlevde noktalı virgül yerel-işlev gövdesi kullanılmasına izin verilir.

Harici yerel bir işlev de staticolmalıdır.

Sözdizimi

§13.6.4veya yerel işlevler dil bilgisi aşağıdaki gibi değiştirilir:

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
    | ';'
    ;