C'est-à-dire que, dans C, nous pouvons définir une fonction comme: et il retournera un nombre plus élevé chaque fois qu'il est appelé.
Y a-t-il un mot-clé équivalent en C #? P> p>
3 Réponses :
Non, il n'y a pas de telle chose en C #. Tous les États que vous souhaitez persister à travers plusieurs appels de méthodes doivent être dans des champs, une instance ou statique.
sauf ... si vous capturez la variable dans une expression de Lambda ou quelque chose comme ça. Par exemple: P>
Func<int> counter = GetCounter(); Console.WriteLine(counter()); // Prints 0 Console.WriteLine(counter()); // Prints 1 Console.WriteLine(counter()); // Prints 2 Console.WriteLine(counter()); // Prints 3
Utilise une fermeture pour simuler une variable locale statique constitue un code maléfique?
Vous devrez créer une variable statique ou d'un élément d'instance de la classe la méthode. P>
public class Foo { static int _bar = 1; public int Bar() { return ++_bar; } }
C a été inventé lorsque les threads n'existaient pas encore. Visual Basic a donc dû l'implémenter dans VB.NET. La quantité de code qu'il doit générer pour le faire le fil et la sécurité exceptionnelle est assez massif.