天轟穿C#教程之#if、#elif、#else和#endif


  老田:但看這個申明符號確實沒有什么用。不過當它和#if、#elif、#else、#endif這些預處理指令結合起來之后,它的功能就非常強大了。

  

  來看個示例:

  

  #define debug  //嘗試注釋和取消注釋這一句,然后運行程序看效果

  

  using System;

  

  using System.Collections.Generic;

  

  using System.Linq;

  

  using System.Text;

  

  namespace第二章_示例

  

  {

  

  classProgram

  

  {

  

  staticvoid Main(string[] args)

  

  {

  

  #if debug

  

  Console.WriteLine("確實申明了debug這個符號");

  

  Console.ReadLine();

  

  #else

  

  Console.WriteLine("切,都沒有申明");

  

  Console.ReadLine();

  

  #endif

  

  }

  

  }

  

  }

  

  執行后效果如圖2-6

 

  

  圖2-6代碼輸入情況以及執行結果

  

  小天:上面示例演示的效果是,如果前面申明了debug這個符號,那么最終效果會顯示"確實申明了debug這個符號",如果將前面申明符號的語句注釋掉,則結果為"切,都沒有申明"。可是,這能夠說明什么呢?有什么用啊?

  

  老田:好好回憶下前面我們說的,是否是說預處理指令的作用就是影響編譯器?換句話說,在上面你看到未顯示的代碼最終也不會被編譯器編譯。不會被編譯到程序,那么程序的體積自然不會因為這段代碼而增大了。

  

  另外需要注意的是,如果使用#if,那么一定記得使用#endif來關閉哦,因為編譯器認為從#if開始后到#endif之間的代碼都是屬於#if或者#else的。如果忽略那一段,那么久"噢嘢"了。

  

  小天:明白了,娜還有個#elif是什么意思?

  

  老田:這不知道是哪個懶人發明的,#elif = else if 。同時,#if這系列判斷也支持邏輯運算符!、==、!= 。下面我們來修改上面的代碼。再申明一個符號debug1,下面的判斷也增加一個,代碼如下

  

  #define debug  //嘗試注釋和取消注釋這一句,然后運行程序看效果

  

  #define debug1 //第二個示例用的

  

  using System;

  

  using System.Collections.Generic;

  

  using System.Linq;

  

  using System.Text;

  

  namespace第二章_示例

  

  {

  

  classProgram

  

  {

  

  staticvoid Main(string[] args)

  

  {

  

  #if debug  && debug1==false    //如果debug存在,同時debug1不存在

  

  Console.WriteLine("確實申明了debug這個符號");

  

  Console.ReadLine();

  

  #elif debug1  //如果debug不存在,而debug1存在

  

  Console.WriteLine("不錯哦,又申明了一個");

  

  Console.ReadLine();

  

  #else//如果兩個都不存在

  

  Console.WriteLine("切,都沒有申明");

  

  Console.ReadLine();

  

  #endif

  

  }

  

  }

  

  }

  

  猜猜上面的代碼會顯示哪一個結果。

  

  本文為天轟穿原著,轉載請注明出處及作者!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM