Как C # компилирует код с директивой препроцессора #if? - PullRequest
1 голос
/ 17 октября 2010

Интересно, как компилятор компилирует мой код, если я использую директиву #if внутри моего кода. Я хотел бы создать специальную версию своего приложения (коммерческая демо-версия) и хочу ограничить функциональность своего приложения. Я бы предпочел избежать запутывания и просто не хотел бы добавлять весь мой скомпилированный код в исполняемый файл. Мне нужно решение сопротивляется предварительному просмотру моего кода в процессе разборки. Могу ли я использовать директивы #if для компиляции вариантов, вместо того чтобы комментировать отключение частей кода?

Ответы [ 2 ]

6 голосов
/ 17 октября 2010

Использование директивы #if похоже на использование препроцессора в c ++, в котором код просто не будет представлен, если условие не будет выполнено (во время компиляции). От MSDN :

Когда компилятор C # встречает #if директива, за которой следует #endif директива, она будет компилировать код между директивами, только если указанный символ определен. В отличие от C и C ++, вы не можете назначить числовое значение для символа; #if оператор в C # является логическим и только проверяет, был ли символ определено или нет.

2 голосов
/ 17 октября 2010

В дополнение к ответу @ ohadsc: с помощью Reflector вы всегда можете проверить, что на самом деле производит компилятор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...