.net 预处理指令符的使用详解

 更新时间:2021年04月07日 17:10:26   作者:大辉哥呀  
这篇文章主要介绍了.net 预处理指令符的使用详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

什么是预处理指令符?

当C#编译器找到一条预处理指令#if,最后找到一条指令时,#endif仅在定义了指定符号的情况下,编译器才会在这些指令之间编译代码。与C和C ++不同,您不能将数字值分配给符号。#if C#中的语句为布尔型,仅测试符号是否已定义。

预处理指令符的使用

  • #if:打开条件编译,仅在定义了指定符号的情况下才编译代码。
  • #elif:根据是否定义了指定的符号,关闭前面的条件编译并打开新的条件编译。
  • #else:如果未定义先前指定的符号,则关闭之前的条件编译并打开新的条件编译。
  • #endif:关闭前面的条件编译。

条件编译(编译器会根据不同配置环境来执行):

#if DEBUG
      Console.WriteLine("我是debug 模式!");
#elif RELEASE
      Console.WriteLine("我是relsease 模式!");
#else
      Console.WriteLine("我是自定义模式!");
#endif
      Console.WriteLine("我是没有被任何预处理过得输出!");

当前解决方案编译环境为Debug

输出结果:

常用指令符:

自定义指令符

举例:我们需要两个版本的代码,基础版、更多功能的企业版本。此时我们就可以通过自定义指令符来满足定制化功能。

  • #define 自定义指令符
  • #undef 删除指令符

也可以通过属性的方式来执行方法

使用Visual Studio快速定义指令符

VS站点-》右键-》属性-》生成-》常规

定义生效后,通过csproj工程文件我们可以看到有两条PropertyGroup对应不同的Condition

定义指令符区域

你还可以使用以下两个预处理程序指令定义可以折叠在大纲中的代码区域:

  • #region:开始一个区域。
  • #endregion:结束区域
#region MyClass definition
public class MyClass
{
  static void Main()
  {
  }
}
#endregion

参考链接

https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/preprocessor-directives

https://blog.walterlv.com/post/how-to-define-preprocessor-symbols.html

https://www.cnblogs.com/woxihuadabai/p/8005892.html

到此这篇关于.net 预处理指令符的使用的文章就介绍到这了,更多相关.net 预处理指令符内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • asp.net分页控件AspNetPager的样式美化

    asp.net分页控件AspNetPager的样式美化

    自从吴旗娃推出了AspNetPager分页控件之后,受到了广大程序员朋友的喜爱,无数个网站都出现这个控件的身影。可是大部分网站程序员的朋友都是直接套用,导致满世界的分页控件样式都是一样的简洁,伤不起啊
    2011-12-12
  • asp.net发送邮件示例分享

    asp.net发送邮件示例分享

    这篇文章主要介绍了asp.net发送邮件示例分享,需要的朋友可以参考下
    2014-02-02
  • 如何轻松搭建Windows8云平台的开发环境

    如何轻松搭建Windows8云平台的开发环境

    Windows Store应用是基于Windows 8操作系统的新一代Windows应用程序,其开发平台以及运行模式和以往传统平台略有不同。为了帮助更多开发人员加入到Windows Store应用开发行列,本篇将介绍如何在Windows Azure云平台搭建Windows8应用开发环境,本篇介绍的方法适合未安装Windows8操作系统,使用Mac或者Linux平台的开发人员参考阅读。
    2013-02-02
  • ASP.NET中用healthMonitor属性用法

    ASP.NET中用healthMonitor属性用法

    ASP.NET中用healthMonitor属性用法...
    2006-09-09
  • Entity Framework Core更新时间映射

    Entity Framework Core更新时间映射

    这篇文章介绍了Entity Framework Core更新时间映射的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • asp.net(c#)动态修改webservice的地址和端口(动态修改配置文件)

    asp.net(c#)动态修改webservice的地址和端口(动态修改配置文件)

    这个问题其实并没有我想像的那个复杂,我们都知道怎么直接修改吧,那就是修改WebConfig文件的配置节
    2012-12-12
  • ASP.NET MVC3的伪静态实现代码

    ASP.NET MVC3的伪静态实现代码

    最近使用asp.net MVC3开发B2C电子商务系统,为了SEO的优化工作,需要通过路由实现伪静态URL,后续再根据需要生成真正的静态页面,不直接走路由访问具体的页面
    2011-12-12
  • asp.net 下载文件时根据MIME类型自动判断保存文件的扩展名

    asp.net 下载文件时根据MIME类型自动判断保存文件的扩展名

    如果我们没法正确判断下载源的文件类型的话,就无法保存为正确的文件格式,会给后续操作及人工阅览造成困扰。 所幸的是,WebRequest可以给出下载源的MIME信息,这让我们可以确定文件的真实格式,并以此来决定最终的存储扩展名。(
    2009-11-11
  • .Net Core实现图片文件上传下载功能

    .Net Core实现图片文件上传下载功能

    这篇文章主要为大家详细介绍了.Net Core实现图片文件上传下载功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • .NET Core使用FluentEmail发送邮件的示例代码

    .NET Core使用FluentEmail发送邮件的示例代码

    这篇文章主要介绍了.NET Core使用FluentEmail发送邮件的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10

最新评论