2010-10-17 94 views
1

我不知道如何編譯我的代碼,如果我在代碼中使用#if指令。 我想創建我的應用程序(商業演示版)的特殊版本,我想限制我的應用程序的功能。我寧願避免混淆,只是不想將所有編譯的代碼添加到可執行文件。我需要解決方案抵制在反彙編過程中預覽我的代碼。我可以使用#if指令的變種編譯而不是使禁用部分代碼註釋?如何C#編譯的#if預處理指令代碼?

回答

6

使用#if指令就像在C++中使用預處理器一樣,如果條件未滿足(在編譯時間內),代碼將不會存在。從MSDN

當C#編譯器遇到的#if 指令,最終接着是 #endif指令時,它將只編譯如果 指定的符號被定義的指令之間的代碼。與C和C++不同,不能將 數值指定給符號; C#中的#if 語句是布爾值,並且只有 測試符號是否已被定義爲 。

+1

我假設你的意思是「預處理器」而不是「預編譯」。的#if在C++中的預處理器僅僅意味着文本的塊被傳遞給真實的編譯器,如果條件沒有得到滿足,即編譯器不連看到裏面的#if的代碼,如果該條件未被滿足之前以文本編輯了。 – 2010-10-17 08:40:06

+0

你是對的,謝謝 – 2010-10-17 08:40:55

2

作爲@ ohadsc回答的補充:您總是可以使用Reflector來檢查編譯器實際生成的內容。