Как легко / быстро заменить числа с плавающей точкой для двойников (например) для компиляции двух разных целей, используя эти два конкретных типа примитивов?
Обсуждение:
У меня есть большой объем кода на C #, который я разрабатываю, и который мне нужно скомпилировать для альтернативного использования чисел с плавающей запятой, двойных или десятичных чисел, в зависимости от варианта использования целевой сборки.
Использование чего-то вроде «class MYNumber: Double», так что необходимо изменить только одну строку кода, не работает, поскольку Double запечатан, и, очевидно, в C # нет #define.
Перегрузка кода с помощью операторов #if #else также не возможна, слишком много поддержки Math-операторов / связанного кода с использованием этих конкретных примитивных типов.
Я в недоумении, как выполнить эту, казалось бы, простую задачу, спасибо!
Редактировать: просто быстрый комментарий относительно бокса, упомянутого в ответе Кайлса: К сожалению, мне нужно избегать бокса, в основном потому, что плавающие выбираются, когда требуется максимальная скорость, и десятичные, когда максимальная точность является приоритетом (и принимая 20x + хит производительности приемлемый). Бокс, вероятно, исключит десятичные дроби как правильный выбор и несколько победит цель.
Edit2: для справки, те, кто предлагает дженерики в качестве возможного ответа на этот вопрос, отмечают, что существует множество проблем, которые считают дженерики (по крайней мере, для наших нужд). Обзор и дальнейшие ссылки см. Использование обобщений для расчетов