Molto spesso capita di dover prendere una decisione sul flusso del codice basandosi sulla presenza o meno di almeno un elemento in una lista. Per fare un esempio, se una lista di oggetti è vuota, dobbiamo riempirla, altrimenti andiamo avanti. In questi casi ci sono diverse possibilità di scrivere la condizione di presenza elementi: Count, Any() e Count().
La proprietà Count torna il numero di elementi di una lista. Il vantaggio di questa proprietà è che offre le migliori performance in quanto è allineata col numero di elementi nella lista e quindi il suo valore è immediatamente disponibile. Tuttavia, questa proprietà non è presente in tutte le classi/interfacce, infatti sebbene sia presente su List[T], non è presente in IEnumerable[T] e quindi in questi casi dobbiamo ricorrere ad altre tecniche.
Il metodo Any torna un booleano che ci dice se la lista contiene almeno un elemento. Questo metodo è il migliore per la leggibilità del codice, ma internamente istanzia un iteratore comportando un overhead dal punto di vista delle performance. Il vantaggio di Any è che è invocabile su qualuqnue lista in quanto è un extension method attaccato a IEnumerable[T].
Il metodo Count torna il numero di record nella lista, ma, a differenza dell'omonima proprietà, lo fa contando tutti gli elementi della lista ogni volta che viene invocato. Questo significa che il metodo ha un grande overhead rispetto alla proprietà e rispetto a Any specialmente per grosse liste.
Volendo stilare una classifica dei metodi per verificare se ci sono elementi in una lista tra quelli visti, la proprietà Count è da preferire sempre li dove disponibile, altrimenti conviene usare Any e lasciar perdere Count. Quest'ultima va usata solo quando vogliamo sapere esattamente quanti elementi ci sono in una lista e questa non mette a disposizione l'omonima proprietà.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.