💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
# /define (C# Compiler Options) **/define** 选项将 _name_ 定义为程序的所有源代码文件中的一个符号。 ## 语法 ``` /define:name[;name2] ``` ## 参数 _name_, _name2_ 要定义的一个或多个符号的名称。 ## 备注 使用 **/define** 选项与使用 [#define](https://msdn.microsoft.com/zh-cn/library/yt3yck0x.aspx) 预处理器指令具有相同的效果,不同点在于编译器选项对项目中的所有文件都有效。在源文件中的 [#undef](https://msdn.microsoft.com/zh-cn/library/wkxst87d.aspx) 指令移除定义之前,符号在源文件中始终保持已定义状态。使用 /define 选项时,一个文件中的 **#undef** 指令不会影响到项目中的其他源代码文件。 可以将用该选项创建的符号与 [#if](https://msdn.microsoft.com/zh-cn/library/4y6tbswk.aspx)、[#else](https://msdn.microsoft.com/zh-cn/library/87a56b46.aspx)、[#elif](https://msdn.microsoft.com/zh-cn/library/88td0y52.aspx) 和 [#endif](https://msdn.microsoft.com/zh-cn/library/hyx43has.aspx) 一起使用,以按条件编译源文件。 **/d** 是 **/define** 的缩写形式。 通过使用分号或逗号分隔符号名称,可以使用 **/define** 定义多个符号。例如: ``` /define:DEBUG;TUESDAY ``` C# 编译器自身没有定义可以在源代码中使用的符号或宏;所有符号定义必须是用户定义的。 | ![](https://box.kancloud.cn/2016-01-31_56adb62c1380a.jpg) 注意 | | :-- | | 与 C++ 这样的语言相同,C# **#define** 不允许给符号赋值。例如,不能使用 **#define** 创建宏或定义常数。如果您需要定义常数,请使用 **enum** 变量。如果您希望创建 C++ 样式的宏,请考虑其他方式,例如泛型。由于宏有容易出错的坏名声,因此 C# 不允许使用宏,而是提供了其他更安全的选择。 | ## 在 Visual Studio 开发环境中设置此编译器选项 1. 打开项目的**“属性”**页。 2. 在**“生成”**选项卡上,键入要在**“条件编译符号”**框中定义的符号。例如,如果要使用下面的代码示例,只需在文本框中键入 **xx**。 有关如何以编程方式设置此编译器选项的信息,请参见 [DefineConstants](https://msdn.microsoft.com/zh-cn/library/6x63tw6d.aspx)。 ``` // preprocessor_define.cs // compile with: /define:xx // or uncomment the next line // #define xx using System; public class Test { public static void Main() { #if (xx) Console.WriteLine("xx defined"); #else Console.WriteLine("xx not defined"); #endif } } ``` ## 请参阅 [C# Compiler Options](https://msdn.microsoft.com/zh-cn/library/2fdbz5xd.aspx) [如何:修改项目属性和配置设置](https://msdn.microsoft.com/zh-cn/library/z15yzzew.aspx)