Si je regardais le code suivant code Javascript, il serait logique ... mais comment est-ce que l'action d'appel() Main ne renvoie une exception NullReferenceException pour i? L'Action a-t-elle saisi un contexte JavaScript comme une chose? Merci d'avance à tous.Y at-il une telle chose comme un « contexte Javascript » en C#
public class Program
{
static void Main(string[] args)
{
var p = new Program();
var action = p.method();
action();
Console.ReadKey();
}
public Action method()
{
var i = 6;
Action action =() => Console.WriteLine(i);
i++;
return action;
}
}
SORTIE >> 7
Le mot que vous cherchez est « fermeture », plutôt que dans un contexte. Il y a un peu d'informations sur le sujet si vous recherchez « C# fermeture », mais en substance, 'I' est extrait de' method' dans sa fermeture, ce qui lui permet de persister après avoir quitté le champ de 'method'. – Rob