Qual è il vantaggio dei generici in un'interfaccia in, ad es. IEnumerableHttpPostedFileBase

1

Mi sono imbattuto in un metodo che richiede un parametro che implementa IEnumerable ed è di un certo tipo come questo:

public myMethod (IEnumerable<HttpPostedFileBase> myParameter) {
                   ....
}

Perché fare questo? Perché non implementare semplicemente l'interfaccia IEnumerable per HttpPostedFileBase e richiedere che il parametro sia un HTTPostedFileBase?

    
posta Johnny 15.04.2016 - 03:44
fonte

1 risposta

5

Perché quindi IEnumerable<T> può essere utilizzato per qualsiasi tipo T, non solo HttpPostedFileBase .

La maggior parte delle raccolte nello spazio dei nomi System.Collections.Generic implementano IEnumerable<T> . IEnumerable<T> è stato creato, non per fornire implementazioni di raccolta concreta per tipi specifici, ma per fornire implementazioni concrete di tipi specifici di raccolte che possono funzionare con qualsiasi tipo.

Le seguenti collezioni implementano tutte IEnumerable<T> e possono quindi eseguire tutte le operazioni definite da IEnumerable<T> :

Dictionary<TKey, TValue>
HashSet<T>
List<T>
LinkedList<T>
Queue<T>
SortedDictionary<TKey, TValue>
SortedList<TKey, TValue>
Stack<T>
SynchronizedCollection<T>
SynchronizedKeyedCollection<K, T>
SynchronizedReadOnlyCollection<T>

Ma mentre tutti hanno caratteristiche di memoria e prestazioni diverse, sono tutti ancora in grado di lavorare con oggetti di qualsiasi tipo.

    
risposta data 15.04.2016 - 04:05
fonte

Leggi altre domande sui tag