2010-03-26 15 views
15

Gibt es eine Begrenzung für die Anzahl generischer Parameter, die Sie für einen .NET-Typ festlegen können? Entweder harte Grenze (wie 32) oder eine weiche Grenze (wo es irgendwie Leistung zu viel bewirkt, etc.)Begrenzung der Anzahl generischer Parameter in .NET?

Was ich mich beziehe, ist:

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

Nur neugierig, weil ich nicht an ein Beispiel denken kann .... wo wäre das ein Problem? :) –

+0

Meine Vermutung wäre, dass es durch die Menge an Speicher begrenzt ist, die Sie haben, aber warum sollten Sie jemals so viele Arten in einer Klasse bestanden haben? – adam0101

+0

Bei statisch typisierten (und typabschließenden) Schließungen für eine dynamische Sprache unter .NET – thr

Antwort

20

Vom C# 2.0 language spec

8.16.3 Mehrere Typparameter Generische Typdeklarationen können eine beliebige Anzahl von Typparametern haben.

+0

Vielen Dank, sehr geschätzt. – thr

18

Anonyme Typen in C# 3.0 sind eigentlich generisch, aus Gründen, über die ich wahrscheinlich irgendwann bloggen sollte. Als wir anonyme Typen entwarfen, stellten wir fest, dass natürlich anonyme Typen mit potenziell hunderten von Feldern erstellt werden konnten. Daher haben wir die Leistung von Generika mit vielen Typparametern getestet.

Wir haben keine nennenswerten Probleme gefunden.

Allerdings, was wir für akzeptabel halten, könnten Sie nicht. Mein Rat: Probieren Sie es aus und sehen Sie. Schreiben Sie einige Benchmarks auf, führen Sie sie aus, und dann argumentieren Sie aus empirischen Daten, anstatt aus den Vermutungen von zufälligen Personen im Internet zu denken, die nicht wissen, was Ihre Benutzerszenarien sind oder welche Leistungsfaktoren für Sie wichtig sind.

Verwandte Themen