MethodInvoke délégué ou de l'expression lambda
Quelle est la différence entre les deux?
Invoke((MethodInvoker) delegate {
checkedListBox1.Items.RemoveAt(i);
checkedListBox1.Items.Insert(i, temp + validity);
checkedListBox1.Update();
}
);
vs
Invoke((MethodInvoker)
(
() =>
{
checkedListBox1.Items.RemoveAt(i);
checkedListBox1.Items.Insert(i, temp + validity);
checkedListBox1.Update();
}
)
);
Est-il une raison pour utiliser l'expression lambda? Et est (MethodInvoker)
casting délégué et lambda de type MethodInvoker? Ce genre d'expression ne nécessite pas de (MethodInvoker)
cast?
OriginalL'auteur Jack | 2011-10-13
Vous devez vous connecter pour publier un commentaire.
1) L'expression lambda est un peu plus court et plus
2) Oui
3) Vous pouvez utiliser le type d'Action, comme ceci:
voici une discussion à propos de l'action vs methodinvoker: stackoverflow.com/questions/1167771/...
N'était pas au courant de cela, merci s'accoupler!
OriginalL'auteur hcb
Les deux approches sont équivalentes. Le premier est connu comme une méthode anonyme, et est un plus tôt .net 2.0 capacité. Le lambda ne devrait pas exiger un plâtre.
Je préfère le lambda, parce qu'il a plus omniprésent utilisation moderne C#/.net développement. Le délégué anonyme n'offre rien de plus de la lambda. Le lambda permet l'inférence de type, qui va de la pratique d'nécessaire dans certains cas.
OriginalL'auteur Brent Arias
MethodInvoker fournit un simple délégué qui est utilisé pour appeler une méthode avec un vide de la liste des paramètres. Ce délégué peut être utilisé pour faire des appels à un contrôle de la méthode Invoke, ou lorsque vous avez besoin d'un simple délégué, mais ne souhaitez pas définir un vous-même.
une Action sur l'autre main peut prendre jusqu'à 4 paramètres.
OriginalL'auteur Ryder