Я вижу, что есть некоторые преимущества для условной компиляции с использованием таких конструкций, как #ifdef, по сравнению с условными проверками во время выполнения, такими как меньший размер скомпилированного файла, возможно, более быстрое выполнение и несколько более простая отладка, но когда уместно использовать одну над другой?Лучше ли использовать условные проверки во время выполнения, когда вычисляемый условный оператор может быть определен только во время выполнения?
По моему мнению, смешивание #ifdefs с регулярными операторами if-then-else делает код уродливым и труднеечитай, поэтому я стараюсь избегать условной компиляции.Однако я заметил, что во многих примерах классов журнала C # условная компиляция используется, чтобы определить, когда выполнять регистрацию, в зависимости от того, определены ли такие символы, как DEBUG / SHIP / TRACE.