Cela a été mentionné dans mon autre question et j'ai pensé qu'il pourrait être utile de l'ajouter à l'enregistrement. Dans le programme suivant, lequel, le cas échéant, des délégués définis localement sont mis en cache entre les appels à la méthode Work au lieu d'être créés à partir de zéro à chaque fois?Quels délégués (le cas échéant) définis localement sont mis en cache entre les appels de méthode?
namespace Example
{
class Dummy
{
public int age;
}
class Program
{
private int field = 10;
static void Main(string[] args)
{
var p = new Program();
while (true)
{
p.Work();
}
}
void Work()
{
int local = 20;
Action a1 =() => Console.WriteLine(field);
Action a2 =() => Console.WriteLine(local);
Action a3 =() => Console.WriteLine(this.ToString());
Action a4 =() => Console.WriteLine(default(int));
Func<Dummy, Dummy, bool> dummyAgeMatch = (l, r) => l.age == r.age;
a1.Invoke();
a2.Invoke();
a3.Invoke();
a4.Invoke();
dummyAgeMatch.Invoke(new Dummy() { age = 1 }, new Dummy(){ age = 2 });
}
}
}
Merci - c'est nouveau! – xyz