2010-04-15 7 views
18

Ist es möglich, ein Verfahren zu Zwang, so dass es nur int empfängt, double, long oder andere numerische Typen, die die üblichen numerischen Operationen (wie + hat, -, *, /) definiert?Generics, die die Typen zu Int Beschränkt, Double, lange

+2

Sie könnten wahrscheinlich eine Schnittstelle mit diesen Operationen erstellen und die numerischen Datentypen in etwas umwandeln, das diese Schnittstelle implementiert. Es wird wahrscheinlich nicht die effizienteste sein, und wird eine Reihe von benutzerdefinierten Sachen verwenden, aber es wird dieses Problem lösen, wenn das das Wichtigste ist. –

Antwort

16

Dies ist derzeit nicht möglich.

Auch hierzu finden Sie this question für eine mögliche Abhilfe

+1

+1: Korrekt, leider. – Richard

+4

Die Tatsache, dass es keinen gemeinsamen Basistyp für die numerischen Typen gibt, ist wirklich bedauerlich. –

+2

Ich würde die Möglichkeit bevorzugen, Operator-Typ Einschränkungen zu spezifizieren – rpetrich

9

Nein, leider gibt es keine solche Einschränkung möglich. Der nächste, den Sie erhalten können, ist struct, IConvertible als generischer Typ-Constraint.

Sie möchten vielleicht this question obwohl lesen.

+2

Ich bin überrascht, warum das von Lucero nicht gewählt wurde. Die Verwendung von Structs ist die engste, die den Typparameter auf Wertetypen beschränken kann – AlwaysAProgrammer

Verwandte Themen