深入浅析c#中的预处理指令

  介绍

深入浅析c#中的预处理指令?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

<强>预处理指令

这些指令/命令不会转换为可执行代码,但会影响编译过程的各个方面,列如,可以让编译器不编译某一部分代码等。

c#中主要的预处理指令

#定义和# undef

<强> #定义指令定义:

 #定义调试

它告诉编译器存在调试这个符号;这个符号不是实际代码的一部分,而只是在编译器编译代码时候可能会根据这个符号做条件编译。

<强> # undef定义:

# undef调试

用来移除定义的符号调试。如果不存在这样的标记,# undef指令则不会生效。同样,用# define再次定义一个同名的标记也不会有任何变化。

注意:

    <李>你需要将#定义和# undef指令写在实际业务代码开始之前的位置。 <李> # define本身没有什么用,需要和其他预处理器指令结合使用,比如#如果
      李,

<强> #如果,# elif,其他#和# endif

这些指令告诉编译器是否要编译包含在其中的代码块。例如:

 int DoSomeWork(双x)
  {//做某事
  #如果调试
  Console.WriteLine ($“x={x}“);
  # endif
  }

这段代码中的控制台。Writeline语句,只有在前面用#定义指令定义了符号调试后才会在编译的时候,真正被编译到;

如果编译器没发现调试符号,就会在编译的时候忽略这句代码。

# elif (=else if)和#其他指令可以用在#如果块中:

 #定义企业
  #定义W10//如果W10进一步> #,,(企业==false)//如果W10定义,但企业不愿# 39;t 

<强> #警告和#误差

当编译器遇到#警告的时候,会产生警告信息;

当编译器遇到#错误的时候,会产生错误信息;

类项目
  {
  静态void Main (string [] args)
  {
  
  #将显示警告这是一个警告消息,当编译
  
  Console.WriteLine (“Hello World !”);
  
  错误#这是一个错误消息,并将打破
  }
  }

编译结果:

Program.cs(10,10):警告CS1030: #警告:& # 39;这是一个警告消息时将显示编译# 39;[/define_warning/define_warning.csproj]
Program.cs(14日8):错误CS1029: #错误:& # 39;这是一个错误消息,并将打破构建# 39;[/define_warning/define_warning。csproj]
1警告(s)
1错误(s)

使用这些指令可以检查# define语句是不是做错了什么事,使用#警告可以提醒要做些事情:

 #如果调试,,释放
  错误#“你# 39;同时已经定义的调试和发布!“
  # endif
  #警告“不要# 39;t忘记删除这条线之前老板测试代码!“
  Console.WriteLine(“* *,我爱这份工作。);

<强> #区域和# endregion

可以用来标识一段代码,在Visual Studio或其他能够识别的IDE里比较有用。

 # 164行“Core.cs"//我们知道这是在文件Core.cs 164行,//在中间包,导致它。//后>类项目
  {
  静态void Main (string [] args)
  {
  int i=0;
  Console.WriteLine (“Hello World !”);
  }
  }

编译是会有警告:

Program.cs(17):警告CS0219:变量& # 39;我# 39;被分配,但它的值是从未使用过[/define_warning/define_warning。csproj]
1警告(s)
0错误(s)

从预警信息可以看出CS0219是警告,加入# pragma后就不会有警告了。

 # pragma禁用CS0219警告
  公共类项目
  {
  静态void Main (string [] args)
  {
  int i=0;
  Console.WriteLine (“Hello World !”);
  }
  }
  # pragma警告恢复CS0219 

注意:警告的代码是区分大小写的,CS2019要大写,如果写成CS2019则没有用。

看完上述内容,你们掌握深入浅析c#中的预处理指令的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!

深入浅析c#中的预处理指令