2010-03-26 8 views
15

Esiste un limite alla quantità di parametri generici che è possibile avere su un tipo in .NET? O limite rigido (come 32) oppure un limite soft (dove si effettua in qualche modo le prestazioni a molto, etc.)Limite sulla quantità di parametri generici in .NET?

Quello a cui mi riferisco è:

class Foo<T0, T2, T3, T4, etc.> { 
} 
+1

Solo curioso perché non riesco a pensare ad un esempio .... dove sarebbe questo un problema? :) –

+0

La mia ipotesi sarebbe che è limitata dalla quantità di memoria che hai, ma perché mai avresti bisogno di così tanti tipi passati in una classe? – adam0101

+0

Quando si eseguono chiusure statiche (e tipo-inferte) per una lingua dinamica su .NET – thr

risposta

20

Dal C# 2.0 language spec

8.16.3 Parametri di tipo multiplo Le dichiarazioni di tipo generico possono avere qualsiasi numero di parametri di tipo.

+0

Grazie, molto apprezzato. – thr

18

I tipi anonimi in C# 3.0 sono in realtà generici, per ragioni che probabilmente dovrei blog su un certo punto. Quando abbiamo progettato i tipi anonimi, ci siamo resi conto che, naturalmente, le persone potevano creare tipi anonimi con potenzialmente centinaia di campi, quindi abbiamo fatto un sacco di test delle prestazioni dei generici con molti parametri di tipo.

Non abbiamo riscontrato alcun problema notevole.

Tuttavia, ciò che consideriamo accettabile, potreste non farlo. Il mio consiglio: provalo e guarda Scrivi alcuni benchmark, eseguili e poi ragionerai con dati empirici, piuttosto che ragionando sulle supposizioni di persone casuali su Internet che non sanno quali sono i tuoi scenari utente o quali fattori di performance sono importanti per te.

Problemi correlati