Определение псевдонима типа в C # для нескольких файлов - PullRequest
11 голосов
/ 22 января 2011

В C ++ легко написать что-то вроде:

#ifdef FAST
typedef Real float;
#endif

#ifdef SLOW
typedef Real double;
#endif

#ifdef SLOWER
typedef Real quad;
#endif

В некотором обычном заголовочном файле, чтобы я мог просто написать одну версию кода и #define соответствующую версию, чтобы получить разные двоичные файлы.

Я знаю, что в C # вы можете сделать что-то похожее, например:

using Real = double;

Так что вы можете получить семантику, аналогичную typedefs.Но возможно ли сделать что-то похожее на код C ++, описанный выше, и мне не пришлось бы писать в каждом отдельном файле?

Ответы [ 2 ]

6 голосов
/ 22 января 2011

Нет, если вы хотите использовать встроенные операторы IL - вам придется делать это для каждого файла. Однако, если вам это не нужно (я подозреваю, что вы делаете ), вы можете заключить его в struct:

public struct Real {
     private readonly REAL_TYPE value;
     public(REAL_TYPE value) { this.value = value; }
     // TODO add lots of operators (add, multiply. etc) here...
}

(где REAL_TYPE - псевдоним using в файле single , который объявляет Real)

За мои деньги не стоит. И использовать статические операторы if будет относительно медленнее, чем прямые операции IL, которые вы получили бы, если бы они были на месте.

0 голосов
/ 22 января 2011

самая близкая вещь будет частичными классами. частичные классы позволяют определить один класс для нескольких файлов.

...