Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Nota
Questo articolo è una specifica di funzionalità. La specifica funge da documento di progettazione per la funzionalità. Include le modifiche specifiche proposte, insieme alle informazioni necessarie durante la progettazione e lo sviluppo della funzionalità. Questi articoli vengono pubblicati fino a quando le modifiche specifiche proposte non vengono completate e incorporate nella specifica ECMA corrente.
Potrebbero verificarsi alcune discrepanze tra la specifica di funzionalità e l'implementazione completata. Le differenze sono riportate nelle note pertinenti del language design meeting (LDM) .
Puoi trovare maggiori dettagli sul processo di adozione delle speclet di funzionalità nello standard del linguaggio C# nell'articolo sulle specifiche di .
Problema del campione: https://github.com/dotnet/csharplang/issues/275
Sommario
Consenti l'utilizzo di un modificatore 'statico' per espressioni lambda e metodi anonimi, che impedisce l'acquisizione di variabili locali o dello stato di istanza dagli ambiti contenitori.
Motivazione
Evitare di acquisire involontariamente lo stato dal contesto circostante, il che potrebbe causare una ritenzione inattesa di oggetti acquisiti o allocazioni aggiuntive non previste.
Progettazione dettagliata
Un metodo lambda o anonimo può avere un modificatore static. Il modificatore static indica che il metodo lambda o anonimo è una funzione anonima statica .
Una funzione anonima statica non può acquisire lo stato dall'ambito circostante.
Di conseguenza, le variabili locali, i parametri e this dall'ambito circostante non sono disponibili all'interno di una funzione anonima statica .
Una funzione anonima statica non può fare riferimento ai membri dell'istanza da un riferimento this implicito o esplicito o base.
Una funzione anonima statica può fare riferimento static membri dell'ambito circostante.
Una funzione anonima statica può fare riferimento constant definizioni dall'ambito circostante.
nameof() in una funzione anonima statica può fare riferimento a variabili locali, parametri o this o base dall'ambito circostante.
Le regole di accessibilità per i membri private nell'ambito di inclusione sono le stesse per static e per le funzioni anonime non-static.
Non viene garantita la presenza di una funzione anonima statica definizione come metodo static nei metadati. Questa operazione viene lasciata all'implementazione del compilatore per ottimizzare.
Una funzione locale nonstatic o una funzione anonima può acquisire lo stato da una funzione anonima statica statica, ma non può acquisire lo stato all'esterno dell'funzione anonima statica.
La rimozione del modificatore static da una funzione anonima in un programma valido non modifica il significato del programma.
C# feature specifications