zoukankan      html  css  js  c++  java
  • 天轰穿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

      

      }

      

      }

      

      }

      

      猜猜上面的代码会显示哪一个结果。

      

      本文为天轰穿原著,转载请注明出处及作者!

  • 相关阅读:
    我给老师发的邮件
    [LeetCode]Sum Root to Leaf Numbers
    [LeetCode]Binary Tree Inorder Traversal
    [LeetCode]Merge Sorted Array
    [LeetCode]Unique Paths II
    [LeetCode]Unique Paths
    [LeetCode]Sort Colors
    [LeetCode]Balanced Binary Tree
    [LeetCode]Valid Palindrome
    [LeetCode]Binary Tree Maximum Path Sum
  • 原文地址:https://www.cnblogs.com/thcjp/p/2714778.html
Copyright © 2011-2022 走看看