Così, quando ho scritto qualcosa di simileQual è la differenza tra la nuova Action() e una lambda?
Action action = new Action(()=>_myMessage = "hello");
Refactor Pro! Mette in evidenza questa come una creazione delegato ridondante e mi permette di accorciare a
Action action =() => _myMessage="hello";
e questo di solito funziona alla grande. Solitamente, ma non sempre. Ad esempio, Rhino Mocks ha un metodo di estensione di nome Do:
IMethodOptions<T> Do(Delegate action);
Qui, passando nella prima versione opere, ma il secondo no. Cosa sta succedendo esattamente sotto le coperte qui?
Il tuo secondo blocco di codice non viene compilato. Ricevo questo messaggio "Impossibile assegnare un'espressione lambda a una variabile locale implicitamente tipizzata". Ma, se sostituisco "var" con "Action", lo fa. –
Sì, hai ragione, non può essere assegnato a una variabile tipizzata implicitamente, lo modificherò. –