Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [C#] Comportamento di List.Count()

    Ciao a tutti,
    ho il seguente dubbio:

    Count() di una lista come si comporta? Scorre la lista?
    Mi viene questo dubbio in quanto Count è un metodo, non una proprietà.

    Mi interessa la risposta per il seguente motivo:
    Se fosse stata una proprietà di tipo int, probabilmente count sarebbe stata modificata in automatico ad ogni inserimento/eliminazione di un elemento della lista, di conseguenza la consultazione di count sarebbe stata veloce perchè non ci sarebbe stato niente da calcolare.

    Essendo un metodo mi viene il sospetto che count scorra la lista per contare i nodi.

    Quindi...
    codice:
    List<Obj> Objs ...
    
    int QtaObjs = Objs.Count(); // scorre la lista per la prima volta
    foreach(Obj obj in Objs) // eseguo altre operazioni, ma scorrendo la lista per la seconda volta
    {
        EseguiAltreOperazioni();
    }

    ..sarebbe più veloce così:
    codice:
    List<Obj> Objs ...
    
    int QtaObjs = 0;
    foreach(Obj obj in Objs) // scorro la lista una volta sola
    {
        QtaObjs++;
        EseguiAltreOperazioni();
    }

    Qualcuno ha già avuto modo di approfondire?

    Grazie
    Luciano

  2. #2
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    spero di non dire una stupidata ma a me sembra invece che sia una proprietà:

    disassemblando ottengo (in basic)
    codice:
    Public ReadOnly Property Count As Integer
        Get
            SyncLock Me._root
                Return Me._list.Count
            End SyncLock
        End Get
    End Property
    Pietro

  3. #3
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Dalla documentazione:

    Retrieving the value of this property is an O(1) operation.
    http://msdn.microsoft.com/it-it/libr...vs.110%29.aspx

    Quindi non scorre nulla...

    edit: aspetta ma tu parli di Count()
    Leggo che If the type of source implements ICollection<T>, that implementation is used to obtain the count of elements. Otherwise, this method determines the count.

    Mi aspetto quindi che nel caso di List venga richiamata la property Count
    Ultima modifica di Alex'87; 18-03-2014 a 18:23
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  4. #4
    Quote Originariamente inviata da Alex'87 Visualizza il messaggio
    Dalla documentazione:
    edit: aspetta ma tu parli di Count()
    Leggo che If the type of source implements ICollection<T>, that implementation is used to obtain the count of elements. Otherwise, this method determines the count.

    Mi aspetto quindi che nel caso di List venga richiamata la property Count
    Esatto Alex,
    parlo di Count().
    Ora mi è chiaro, grazie a tutti!

    Luciano

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.