No, non c'è niente di simile in C#. Tutto lo stato che si desidera mantenere su più chiamate di metodo deve essere nei campi, sia di istanza che statici.
Tranne ... se si acquisisce la variabile in un'espressione lambda o qualcosa del genere. Per esempio:
public Func<int> GetCounter()
{
int count = 0;
return() => count++;
}
Ora è possibile utilizzare:
Func<int> counter = GetCounter();
Console.WriteLine(counter()); // Prints 0
Console.WriteLine(counter()); // Prints 1
Console.WriteLine(counter()); // Prints 2
Console.WriteLine(counter()); // Prints 3
Ora, naturalmente, si sta solo chiamando GetCounter()
una volta, ma che "variabile locale" è certamente vive su ben oltre la durata si potrebbe avere atteso ...
Questo potrebbe essere o non essere di alcuna utilità per voi - dipende da cosa state facendo. Ma la maggior parte delle volte ha davvero senso che un oggetto abbia il suo stato nei campi normali.
fonte
2011-12-14 21:44:31
C è stato inventato quando i thread non esistevano ancora. Quindi era Visual Basic, dovevano implementarlo in vb.net. La quantità di codice che deve generare per renderla thread ed eccezionalmente sicura è abbastanza massiccia. –
Un'ottima domanda –