7
J'ai une liste de clients que j'utilise pour créer des éléments comme celui-ci:Monotouch.Dialog - Quel élément a été taraudés
Foreach(Customer c in Customers)
{
//Make the StyledStringElement
//Set the Tapped to action a touch
element.Tapped +=() => { Push (new SomeController (c.ClientId)); };
}
Le problème est que lorsque l'élément est exploité, il envoie le dernier client à SomeController().
Comment puis-je définir le délégué taraudé avec des informations id le client?
L'explication était excellente, elle a maintenant un sens complet. –
Cet article est fantastique. J'ai déjà rencontré et résolu ce problème par le passé, mais la dissection de Resnik est géniale. Décomposition de base: l'action que le lamda exécute est créée dès qu'elle est nécessaire à l'exécution ... à ce stade, l'itérateur dans l'instruction foreach a déjà été déplacé à la fin de la collection ... donc la dernière valeur dans la collection est ce qui sera utilisé dans l'action lamda. D'où la nécessité pour la variable locale d'injecter la valeur correcte dans le lambda. – NovaJoe