Verificare se una lista è vuota usando la proprietà Count o i metodi Any e Count

di Stefano Mostarda, in LINQ, Entity Framework,

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

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

Nessuna risorsa collegata

I più letti di oggi