ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# #define(C# 参考) 使用 **#define** 定义符号。当您将符号用作传递给 [#if](https://msdn.microsoft.com/zh-CN/library/4y6tbswk.aspx) 指令的表达式时,此表达式的计算结果为 **true**,如下例所示: \# **define** DEBUG ## 备注 | ![](https://box.kancloud.cn/2016-01-31_56adb62c1380a.jpg) 注意 | | :-- | | 不能像在 C 和 C++ 中的通常做法一样,使用 **#define** 指令来声明常数值。最好是将 C# 中的常数定义为类或结构的静态成员。如果具有多个像这样的常数,可以考虑创建一个单独的“Constants”类来保存这些常数。 | 符号可用于指定编译的条件。可以使用 [#if](https://msdn.microsoft.com/zh-CN/library/4y6tbswk.aspx) 或 [#elif](https://msdn.microsoft.com/zh-CN/library/88td0y52.aspx) 来测试符号。还可以使用 **conditional** 特性执行条件编译。 可以定义符号,但是无法对符号赋值。 **#define** 指令必须在使用任何不是预处理器指令的指令之前出现在文件中。 也可以用 [/define](https://msdn.microsoft.com/zh-CN/library/0feaad6z.aspx) 编译器选项来定义符号。可以用 [#undef](https://msdn.microsoft.com/zh-CN/library/wkxst87d.aspx) 来取消定义符号。 用 **/define** 或 **#define** 定义的符号与具有同一名称的变量不冲突。即,不应将变量名传递到预处理器指令,并且只能用预处理器指令计算符号。 用 **#define** 创建的符号范围是在其中定义该符号的文件。 如以下示例所示,您必须将 **#define** 指令置于文件的顶部。 ``` #define DEBUG //#define TRACE #undef TRACE using System; public class TestDefine { static void Main() { #if (DEBUG) Console.WriteLine("Debugging is enabled."); #endif #if (TRACE) Console.WriteLine("Tracing is enabled."); #endif } } // Output: // Debugging is enabled. ``` 有关如何取消定义符号的示例,请参见 [#undef(C# 参考)](https://msdn.microsoft.com/zh-CN/library/wkxst87d.aspx)。 ## 请参阅 [C# 参考](https://msdn.microsoft.com/zh-CN/library/618ayhy6.aspx) [C# 编程指南](https://msdn.microsoft.com/zh-CN/library/67ef8sbd.aspx) [C# 预处理器指令](https://msdn.microsoft.com/zh-CN/library/ed8yd1ha.aspx) [const(C# 参考)](https://msdn.microsoft.com/zh-CN/library/e6w8fe1b.aspx) [How to: Compile Conditionally with Trace and Debug](https://msdn.microsoft.com/zh-CN/library/64yxa344.aspx) [#undef(C# 参考)](https://msdn.microsoft.com/zh-CN/library/wkxst87d.aspx) [#if(C# 参考)](https://msdn.microsoft.com/zh-CN/library/4y6tbswk.aspx)