Qual è il vero vantaggio di restituire ICollection < T > invece di un elenco < T > ;? [duplicare]

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

Domanda

Ho letto un paio di post sul blog che menzionano che per le API pubbliche dovremmo sempre restituire ICollection (o IEnumerable) invece di List. Qual è il vero vantaggio di restituire ICollection anziché un elenco?

Grazie!

Duplicato: Qual è la differenza tra Elenco (di T) e Collezione (di T)?

È stato utile?

Soluzione

Un enumeratore restituisce solo un'entità alla volta mentre si scorre su di essa. Questo perché utilizza un rendimento> . Una raccolta, invece, restituisce l'intero elenco, richiedendo che l'elenco sia completamente archiviato in memoria.

La risposta breve è che gli enumeratori sono più leggeri ed efficienti.

Altri suggerimenti

Ti dà più libertà nella scelta della struttura di dati Sottostante.

Un elenco presuppone che l'implementazione supporti l'indicizzazione, ma ICollection non fa tale ipotesi.

Ciò significa che se scopri che un Set può fornire prestazioni migliori poiché l'ordinamento è irrilevante, sei libero di cambiare il tuo approccio senza influenzare i clienti.

È l'incapsulamento di base.

Penso che IList sarebbe più appropriato, ma ...

ICollection è solo un'interfaccia, mentre List è un'implementazione specifica di tale interfaccia. E se volessi utilizzare in seguito un altro contenitore oltre a un elenco? Se esponi pubblicamente un'interfaccia ICollection, puoi cambiare il tuo contenitore interno in qualcos'altro in seguito, purché il nuovo contenitore implementi anche l'interfaccia ICollection.

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