详见:https://learn.microsoft.com/zh-CN/dotnet/csharp/language-reference/preprocessor-directives
预处理指令简介
C#中可使用这些指令来帮助条件编译。 不同于 C 和 C++ 指令,不能使用这些指令来创建宏。 预处理器指令必须是一行中唯一的说明。
分类详情
1.可为空上下文#nullable
#nullable
预处理器指令将设置可为空注释上下文和可为空警告上下文 。 此指令控制是否可为空注释是否有效,以及是否给出为 Null 性警告。 每个上下文要么处于已禁用状态,要么处于已启用状态 。具体使用场景待续
2.条件编译#if
C#使用四个预处理器指令来控制条件编译:
#if
:打开条件编译,其中仅在定义了指定的符号时才会编译代码。#elif
:关闭前面的条件编译,并基于是否定义了指定的符号打开一个新的条件编译。#else
:关闭前面的条件编译,如果没有定义前面指定的符号,打开一个新的条件编译。#endif
:关闭前面的条件编译。
仅在定义了指定的符号时(或使用
!
、not 未定义指定的符号时),C# 编译器才会编译 #if
指令和 #endif
指令之间的代码。 与 C 和 C++ 不同,不能将数字值分配给符号。 C# 中的 #if
语句是布尔值,且仅测试是否已定义该符号。条件编译使用场景
使用条件编译语句可以在UNITY打包编译导出、在编辑器中运行前编译时,根据要编译的平台(如PC、安卓、IOS)来决定要编译哪段代码
UNITY提供了一些自带的符号定义,生成(build)系统会感知表示 SDK 样式项目中不同目标框架的预定义预处理器符号。 在创建可以面向多个 .NET 版本(多个目标平台)的应用程序时,这些符号会很有用。
例如,只有在定义了符号
DEBUG
时将编译以下代码:#if DEBUG
Console.WriteLine("Debug version");
#endif
未定义
MYTEST
时,将编译以下代码:#if !MYTEST
Console.WriteLine("MYTEST is not defined");
#endif
条件编译语句中可使用如下逻辑运算符
#if
以及 #else
、#elif
、#endif
、#define
和 #undef
指令,可以基于是否存在一个或多个符号来选择性编译代码。 条件编译在编译调试版本的代码或编译特定配置的代码时会很有用。3.定义区域#region
(用于折叠代码大纲)
可以使用以下两个预处理器指令来定义可在大纲中折叠的代码区域:
#region
:启动区域。#endregion
:结束区域。
利用
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)