Абстрагируясь от конкретных типов целых чисел - PullRequest
3 голосов
/ 18 апреля 2011

Я пишу программное обеспечение, которое работает с различными типами целых чисел (uint, short, ushort, byte и т. Д.).Проблема состоит в том, что типы этих чисел могут измениться, или, в некоторых случаях, потребуется другое сочетание этих типов.Вопрос в том, каковы наилучшие методы для решения этой ситуации?Я могу подумать об использовании #define или создании общих классов.Но нет никаких подходящих ограничений для универсальных типов.

РЕДАКТИРОВАТЬ: целые числа используются в файлах конфигурации для другого оборудования.Они могут использовать разные порядковые номера или разные типы целых чисел.

Ответы [ 2 ]

5 голосов
/ 18 апреля 2011

При использовании дженериков лучшим ограничением, которое вы можете здесь использовать, является :struct, что не очень ограничивает и не дает вам доступа к чему-либо полезному.Если проблема в операторов , то существуют различные способы взлома;MiscUtil предоставляет поддержку оператора с помощью обобщений, или dynamic работает тоже (почти так же быстро, если вы не используете Nullable<T>).

Псевдоним using может помочь, если вам нужно время компиляции,т.е. (в каждом файле)

using Number = System.Int32;
1 голос
/ 18 апреля 2011

Типы значений не могут быть абстрагированы с использованием таких обобщений, как это, нет общей базы, которая дает вам какую-либо полезную функциональность. Лучше всего создавать свои собственные структуры вокруг типов значений в .NET и кодировать их, чтобы операторы работали друг с другом. Очевидно, что вы делаете с этими структурами, зависит от того, какое поведение вы решите им дать.

С помощью этих структур обертывания вы также можете определить общую базу, которая даст вам что-то полезное.

...