Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Notitie
Dit artikel is een functiespecificatie. De specificatie fungeert als het ontwerpdocument voor de functie. Het bevat voorgestelde specificatiewijzigingen, samen met informatie die nodig is tijdens het ontwerp en de ontwikkeling van de functie. Deze artikelen worden gepubliceerd totdat de voorgestelde specificaties zijn voltooid en opgenomen in de huidige ECMA-specificatie.
Er kunnen enkele verschillen zijn tussen de functiespecificatie en de voltooide implementatie. Deze verschillen worden vastgelegd in de relevante LDM-notities (Language Design Meeting) .
Meer informatie over het proces voor het aannemen van functiespeclets in de C#-taalstandaard vindt u in het artikel over de specificaties.
Probleem met kampioen: https://github.com/dotnet/csharplang/issues/275
Samenvatting
Sta een 'static' modifier toe op lambdas en anonieme methoden, waardoor het vastleggen van lokale variabelen of toestand van een instantie uit omliggende scopes niet is toegestaan.
Motivatie
Vermijd het onbedoeld vastleggen van de toestand vanuit de omringende context, wat kan leiden tot onverwachte retentie van vastgelegde objecten of onverwachte extra toewijzingen.
Gedetailleerd ontwerp
Een lambda- of anonieme methode kan een static
modifier hebben. De static
modifier geeft aan dat de lambda of anonieme methode een statische anonieme functie is.
Een statische anonieme functie kan geen status vastleggen vanuit de omliggende scope.
Hierdoor zijn lokale variabelen, parameters en this
van de insluitende scope niet beschikbaar binnen een statische anonieme functie.
Een statische anonieme functie kan niet verwijzen naar instantieleden van een impliciete of expliciete this
of base
verwijzing.
Een statische anonieme functie kan verwijzen naar static
elementen uit de omsluitende scope.
Een statische anonieme functie kan verwijzen naar constant
definities van het insluitbereik.
nameof()
in een statische anonieme functie kan verwijzen naar lokalen, parameters of this
of base
uit de omliggende scope.
Toegankelijkheidsregels voor private
-leden in de omsluitende scope zijn dezelfde voor static
en niet-static
anonieme functies.
Er wordt geen garantie gegeven of een statische anonieme functie definitie wordt verzonden als een static
methode in metagegevens. Dit wordt overgelaten aan de compiler-implementatie om te optimaliseren.
Een niet-static
lokale functie of anonieme functie kan de status vastleggen vanuit een omhullende statische anonieme functie, maar kan de status niet vastleggen buiten de omhullende statische anonieme functie.
Het verwijderen van de static
modifier van een anonieme functie in een geldig programma verandert niet de betekenis van het programma.
C# feature specifications