J'essaie de créer une fonction qui peut créer une action qui incrémente le nombre entier qui lui est passé. Cependant, ma première tentative me donne une erreur "cannot use ref or out parameter inside an anonymous method body".
public static class IntEx {
public static Action CreateIncrementer(ref int reference) {
return () => {
reference += 1;
};
}
}
Je comprends pourquoi le compilateur n'aime pas cela, mais néanmoins j'aimerais avoir une manière gracieuse de fournir une belle usine d'incrémenteur qui peut pointer vers n'importe quel entier. La seule façon que je vois de le faire est quelque chose comme ce qui suit :
public static class IntEx {
public static Action CreateIncrementer(Func<int> getter, Action<int> setter) {
return () => setter(getter() + 1);
}
}
Mais bien sûr, cela est plus pénible à utiliser pour l'appelant, qui doit créer deux lambdas au lieu de simplement passer une référence. Existe-t-il un moyen plus gracieux de fournir cette fonctionnalité, ou dois-je me contenter de l'option à deux lambdas ?