C#预处理指令

一:C# 预处理器指令

在这里插入图片描述

二:C# 预处理器指令列表

预处理器指令描述
#define它用于定义一系列成为符号的字符。
#undef它用于取消定义符号。
#if它用于测试符号是否为真
#else它用于创建复合条件指令,与 #if 一起使用。
#elif它用于创建复合条件指令。
#endif指定一个条件指令的结束。
#line它可以让您修改编译器的行数以及(可选地)输出错误和警告的文件名。
#error它允许从代码的指定位置生成一个错误。
#warning它允许从代码的指定位置生成一级警告。
#region它可以让您在使用 Visual Studio Code Editor 的大纲特性时,指定一个可展开或折叠的代码块。
#endregion它标识着 #region 块的结束。

三:练习

1: #define指令

①:定义
#define 预处理器指令创建符号常量。
#define 允许您定义一个符号,这样,通过使用符号作为传递给 #if 指令的表达式,表达式将返回 true。
②:例:

#define PI
using System;
/*
  预处理命名
*/
namespace PreprocessorDirectives
{
    class Program
    {
    
        static void Main(string[] args)
        {
            //【1】#define	它用于定义一系列成为符号的字符。
            #if (PI)
            Console.WriteLine("PI is defined");
            #else
            Console.WriteLine("PI is not defined");
            #endif
            Console.ReadLine();
        }
    }
}

运行结果:
在这里插入图片描述
补充:将#if(PI)改为#if(!PI)
在这里插入图片描述
运行效果:

在这里插入图片描述

③:注意:不能在文件的第一个标记之后定义或取消定义预处理器符号

不能在文件的第一个标记之后定义预处理器符号
在这里插入图片描述
不能在文件的第一个标记之后取消定义预处理器符号
在这里插入图片描述
备注:#define指令常和#if条件语句结合使用,单独使用无意义,#define与#undef声明必须放在C#源文件的开头位置,即程序集的引用的上方,不然将报错,错误信息请看上方注意部分。

2:undef指令

①:定义
undef取消定义符号,使在它前面定义的预处理指令不起作用。

②:例

#define BUG
#undef BUG
using System;
/*
  预处理命名
*/

namespace PreprocessorDirectives
{
    class Program
    {
        static void Main(string[] args)
        {
            //【2】#undef	它用于取消定义符号。
             #if (BUG)
             Console.WriteLine("这个BUG预处理命令未被取消!");
             #else
            Console.WriteLine("这个BUG预处理命令已经被取消啦!");
              #endif
            Console.ReadLine();
        }
    }
}

运行效果:
在这里插入图片描述
注意:undef是使在它前面定义的预处理指令不起作用
将上面#define BUG和#undef BUG的顺序交换一下
在这里插入图片描述
运行效果:
在这里插入图片描述

3:预处理条件语句(#if #else #elif #endif )

①:例

#define BUG1
#define BUG2
#define BUG3
using System;
/*
  预处理命名
*/
namespace PreprocessorDirectives
{
    class Program
    {
        static void Main(string[] args)
        {
            //【3】条件语句
            #if (BUG1)
            Console.WriteLine("BUG1");
            #elif (BUG2)
             Console.WriteLine("BUG2");
            #elif (BUG3)
            Console.WriteLine("BUG3");
            #endif
            Console.ReadLine();
        }
    }
}

运行效果:
在这里插入图片描述
把#define BUG1去掉
在这里插入图片描述
运行效果:
在这里插入图片描述

②:注意:
预处理条件语句和程序基本语法里的条件语句是差不多的但是预处理的#if不能单独用
如下:
在这里插入图片描述
预处理#endif和语法里的条件语句else意义是不同的
在#endif后加入一条打印语句 Console.WriteLine(“条件都不满足!”);
在这里插入图片描述

运行效果:

在这里插入图片描述
③:预处理条件语句还支持一组(逻辑运算符!=,==,!=和||
将#if(BUG) 改为 #if (BUG1&&BUG2&&BUG3)
在这里插入图片描述
运行效果:
在这里插入图片描述

4:#line指令(基本上很少用到)

在这里插入图片描述

5:#error和#warning指令

①:定义
#error它允许从代码的指定位置生成一个错误。
#warning 它允许从代码的指定位置生成一级警告。
②:例
#error:这个只能在调试种使用

// preprocessor_error.cs  
// CS1029 expected  
#define DEBUG  
class MainClass
{  
    static void Main()
    {  
#if DEBUG  
#error DEBUG is defined  
#endif  
    }  
}  

#warning:表示警告!

#define BUG1
#define BUG2
#define BUG3
using System;
/*
  预处理命名
*/

namespace PreprocessorDirectives
{
    class Program
    {
        static void Main(string[] args)
        {
            //【5】#error它允许从代码的指定位置生成一个错误。#warning	它允许从代码的指定位置生成一级警告。
            //int LeftNum=25, RightNum=0,divNum;
            //divNum = LeftNum / RightNum;
#if   (BUG1||BUG1||BUG2)
#warning  DEBUG is warning  
#endif
            Console.ReadLine();
        }
    }

6:#region 和#endregion指令

#region它可以让您在使用 Visual Studio Code Editor 的大纲特性时,指定一个可展开或折叠的代码块。
#endregion 它标识着 #region 块的结束。

namespace PreprocessorDirectives
{
    class Program
    {
        static void Main(string[] args)
        {
            #region 折叠代码块
            Console.WriteLine("折叠代码块");
            #endregion
        }
    }
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嘟嘟的程序员铲屎官

你的鼓励将是我最大的动力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值