Sappiamo dell'esecuzione posticipata o delle funzionalità di valutazione lazy introdotte in C #. Ma a volte le persone si confondono con loro. Perché non c'è alcuna differenza significativa. Puoi solo sapere se conosci gli interni. Non dovrebbe esserci una differenza sintattica tra loro per rimuovere la confusione?
Penso che la parola chiave let
di F # possa essere importata in C # per specificare le valutazioni lazy. Come -
let selectedItems = Items.Where(i => i.Count < 5);
Cosa ne pensate?
Aggiornamento:
In risposta a prima risposta , non sto proponendo che la parola chiave let
debba essere utilizzata nei luoghi in cui la valutazione lazy sta già accadendo secondo il modello di compilazione attuale. Allora sarà inutile in realtà. Sto proponendo che la parola chiave let
debba definire il tipo di esecuzione. Per essere chiari -
var selectedItems = Items.Where(i => i.Count < 5).ToList();
sarà eseguito con entusiasmo dal modello attuale. Ma la mia proposta è, se usiamo
let selectedItems = Items.Where(i => i.Count < 5).ToList();
sarà eseguito in seguito, solo quando richiesto. Anche se questo non è desiderabile in quanto restituirà diverse liste di oggetti identici ogni volta. La 'cosa' definita con let
parola chiave può essere pensata come una costante 'espressione' come F #.
Aggiornamento 2:
Collega questa risposta SO come prova del fastidio della gente con un'esecuzione differita -