Do specifica che alcuni effetti collaterali avranno luogo quando vengono eseguiti e restituisce la sequenza con effetti collaterali.
Esegui enumera la sequenza e restituisce void.
Pensate in questo modo: fate "tag" la sequenza con effetti collaterali. Questi effetti collaterali si avranno solo quando la sequenza è enumerata. Do restituisce la nuova sequenza con effetti collaterali.
// Example of .Do
var elements = new[] { 1, 2, 3 };
var elementsWithSideEffects = elements.Do(e => MessageBox.Show(e)); // No Message Boxes shown yet!
elementsWithSideEffects.Run(); // 3 message boxes shown
Run, d'altra parte, enumera la sequenza: Run(), o, in alternativa attribuisce effetti collaterali, quindi enumera la sequenza: Run (azione)
// Example of .Run with its own side effects:
var elements = new[] { 1, 2, 3 };
elements.Run(e => MessageBox.Show(e)); // 3 Message Boxes shown.
fonte
2012-01-04 19:44:44
Jonathan, qualcuna delle risposte ti ha aiutato? In tal caso, contrassegnare come risposta. Grazie! –
Chiunque si chieda, l'equivalente di "Esegui" nei nuovi build Rx è il metodo di estensione Observable.Wait(). Questo metodo blocca l'esecuzione finché il valore finale o un'eccezione non viene ricevuta dalla sorgente osservabile. Invocandolo si verifica un abbonamento. – thefellow3j