Универсальный, допускающий только целые числа в качестве аргумента типа - PullRequest
2 голосов
/ 07 ноября 2010

Я пишу класс RationalNumber на C # и хотел бы сделать его универсальным, но разрешить в качестве входных данных только целые числа (int, byte, UInt32, мой собственный класс BigInt ...) - нет смысла иметь рациональное число, основанное на числах с плавающей точкой или даже на обычных объектах, таких как Control.

Однако, кажется, что я не могу отфильтровать нецелочисленные типы при объявлении класса.

Я что-то упустил?

1 Ответ

2 голосов
/ 07 ноября 2010

Нет, вы не можете.

И у вас есть дополнительная проблема, что нет ограничения arithmetic.Так что нет статически типизированного способа использовать операторы вашего аргумента типа.Поэтому вам нужно будет использовать динамический, который работает медленнее (если только он не улучшил время выполнения / дрожание начиная с .net 3.5).

Некоторые проекты с похожими проблемами вообще не делали класс универсальным и использовали кодгенератор, чтобы специализировать его вместо этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...