Полагаю, ваш код выглядит так:
void DoSomethingIfCompFlag() {
#if COMPILER_FLAG
//your code
#endif
}
Это не будет оптимизировано, однако:
partial void DoSomethingIfCompFlag();
#if COMPILER_FLAG
partial void DoSomethingIfCompFlag() {
//your code
}
#endif
Первый пустой метод является частичным, и компилятор C # 3 оптимизирует его.
Кстати: это в основном то, для чего нужны частичные методы. Microsoft добавила генераторы кода к своим дизайнерам Linq, которые должны вызывать методы, которые по умолчанию ничего не делают.
Вместо того, чтобы заставлять вас перегружать метод, вы можете использовать частичное.
Таким образом, полностью не оптимизируются партиалы, если они не используются и производительность не теряется, вместо добавления дополнительной нагрузки на пустой вызов метода.