Quelle est la différence entre la nouvelle Action() et un lambda?

Donc, quand j'écris quelque chose comme cela

Action action = new Action(()=>_myMessage = "hello");

Refactoriser Pro! Faits saillants le présent comme un redondante déléguer la création, et me permet de raccourcir

Action action = () => _myMessage="hello";

Et généralement cela fonctionne très bien. Généralement, mais pas toujours. Par exemple, le Rhinocéros se moque de a une méthode d'extension nommée à Faire:

IMethodOptions<T> Do(Delegate action);

Ici, en passant dans la première version fonctionne, mais le second ne l'est pas. Ce qui se passe exactement sous les couvertures ici?

  • Votre deuxième bloc de code ne compile pas. Je reçois ce message "Impossible d'assigner une expression lambda à une implicitement de type de la variable locale". Mais, si je remplace le "var" par "Action" il ne.
  • Oui, vous avez raison, il ne peut pas être attribué à une tapée implicitement variable, je vais le modifier.
InformationsquelleAutor George Mauer | 2009-04-19