Che cos'è l'appliance e come utilizzare le espressioni lambda?[duplicare]

StackOverflow https://stackoverflow.com/questions/25376

  •  09-06-2019
  •  | 
  •  

Domanda

Questa domanda ha già una risposta qui:

Ho letto che le espressioni Lambda sono un'aggiunta incredibilmente potente a C#, ma ne sono sconcertato.Come possono migliorare la mia vita o migliorare il mio codice?Qualcuno può indicare una buona risorsa per imparare tali espressioni?

Sembrano fantastici da morire, ma come si relazionano alla mia vita quotidiana come sviluppatore asp.net?

Modificare:Grazie per gli esempi e grazie per il collegamento agli articoli di Eric White.Li sto ancora digerendo adesso.Una domanda veloce:le espressioni lambda sono utili per qualcosa di diverso dalle query?Ogni esempio che ho visto è stato un costrutto di query.

È stato utile?

Soluzione

:sono espressioni lambda utili per qualsiasi cosa diversa dall'esecuzione di query

Le espressioni Lamba non sono altro che un modo conveniente per scrivere una funzione 'in-line'.

Quindi sono utili ovunque tu voglia un pezzo di codice che può essere chiamato come se fosse una funzione separata ma che in realtà è scritto all'interno del suo chiamante.(Oltre a mantenere il codice correlato nella stessa posizione in un file, questo ti consente anche di giocare a giochi divertenti con ambito variabile - vedi 'chiusure' per riferimento.)

Un esempio di utilizzo non correlato alle query di lamba potrebbe essere un pezzetto di codice che esegue qualcosa in modo asincrono che si avvia con ThreadPool.QueueUserWorkItem.Il punto importante è che potresti anche scriverlo utilizzando delegati anonimi (che erano un'introduzione a C#2) o semplicemente una semplice funzione membro di classe separata.

Questo http://blogs.msdn.com/jomo_fisher/archive/2005/09/13/464884.aspx è un'eccellente introduzione passo passo a tutte queste cose, che potrebbe aiutarti.

Altri suggerimenti

I Lambda portano la programmazione funzionale in C#.Sono funzioni anonime che possono essere passate come valori ad alcune altre funzioni.Utilizzato maggiormente in LINQ.

Ecco un esempio inventato:

List<int> myInts = GetAll();
IEnumerable<int> evenNumbers = myInts.Where(x => x % 2 == 0);

Ora, quando esegui la ricerca attraverso i numeri pari, il lamda

x=> x % 2 == 0

viene quindi applicato come filtro a myInts.

Diventano davvero utili per aumentare la leggibilità di algoritmi complicati che avrebbero molti condizionali e cicli IF annidati.

Ecco un semplice esempio di qualcosa di interessante che puoi fare con i lambda:

List<int> myList = new List<int>{ 1, 2, 3, 4, 5, 6, 7, 8, 9 };
myList.RemoveAll(x => x > 5);
//myList now == {1,2,3,4,5}

Il metodo RemoveAll accetta un predicato (un delegato che accetta argomenti e restituisce un valore bool), tutti quelli che corrispondono vengono rimossi.L'uso di un'espressione lambda rende più semplice la dichiarazione effettiva del predicato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top