c#利用宏定义调试代码

#define

使用 #define 来定义符号。 将符号用作传递给 #if 指令的表达式时,该表达式的计算结果为 true,如以下示例所示:

#define DEBUG

说明

#define 令不能用于声明常量值常量定义例:public const int value = 213;

 C# 中的常量最好定义为类或结构的静态成员。 如果具有多个此类常量,请考虑创建一个单独的“常量”类来容纳它们。

符号可用于指定编译的条件。 可通过 #if 或 #elif 测试符号。 还可以使用 conditional 属性来执行条件编译。

可以定义一个符号,但不能向符号分配值。 文件中必须先出现 #define 指令,才能使用并非同时也是预处理器指令的任何指示。

还可以通过 /define 编译器选项来定义符号。 可以通过 #undef 取消定义符号。

使用 /define 或 #define 定义的符号与具有相同名称的变量不冲突。 也就是说,变量名称不应传递给预处理器指令,且符号仅能由预处理器指令评估。

使用 #define 创建的符号的作用域是在其中定义该符号的文件。

如以下示例所示,必须将 #define 指令放在文件顶部。

 
  1. #define DEBUG

  2. //#define TRACE

  3. #undef TRACE

  4.  
  5. using System;

  6.  
  7. public class TestDefine

  8. {

  9. static void Main()

  10. {

  11. #if (DEBUG)

  12. Console.WriteLine("Debugging is enabled.");

  13. #endif

  14.  
  15. #if (TRACE)

  16. Console.WriteLine("Tracing is enabled.");

  17. #endif

  18. }

  19. }

  20. // Output:

  21. // Debugging is enabled.

在项目属性-》生成-》条件编译符号作用等同,

c#利用宏定义调试代码_第1张图片

利用宏定义

更方便的调试代码

#define DEBUG   // C#的宏定义必须出现在所有代码之前。当前我们只让DEBUG宏有效。

代码用 #if DEBUG 包裹

 

#if DEBUG
            ToolsPath = @"D:\workspace\shopstyle\tool";
#else
            ToolsPath = Environment.CurrentDirectory;
#endif

你可能感兴趣的:(调试)