params T [] vs IEnumerableT come tipo di parametro

3

So che esiste una proposta per params IEnumerable<T> .

Durante la progettazione di un'API, quando dovremmo scegliere params T[] (array params) su IEnumerable<T> . O dovrebbero entrambi essere implementati per una migliore esperienza dell'utente finale?

Esempio:

void MyCoolMethod(params string[] strings)

void MyCoolMethod(IEnumerable<string> strings)

Quando si utilizza l'invocazione params è notevolmente semplificato, ma se si desidera passare un po 'di IEnumerable , è necessario chiamare ToArray .

    
posta Konrad 07.12.2018 - 09:54
fonte

1 risposta

4

La parola chiave params è utile solo quando tu come codificatore passerai un numero di stringhe che possono variare tra le chiamate e non vuoi metterle manualmente in un array per ogni chiamata.

Il tipo di dati IEnumerable<T> è utile, quando tu come codificatore hai una collezione di qualsiasi tipo e vuoi passarla.

Quindi adattare il tuo metodo al tuo pubblico. Quelle stringhe passate, vengono come stringa hardcoded dallo sviluppatore? Come .Allow("GET", "PUT", "POST") o provengono da una routine diversa nel tuo programma come .Allow(this.ReadAllowedVerbsFromConfiguration()) ?

Quando l'umano seduto davanti alla macchina deve digitare i parametri, usa params , altrimenti un IEnumerable<T> potrebbe essere la scelta migliore.

    
risposta data 07.12.2018 - 10:14
fonte

Leggi altre domande sui tag