VS条件调试

来源:互联网 发布:linux命令 cp r 编辑:程序博客网 时间:2024/05/01 00:18

1、当你使用F11进行dubug工作时,经常会进入到一些不想进入的property或method内部,使用[DebuggerStepThrough]来完成这个任务。其命名空间是System.Diagnostics;

static void Main(string[] args)

        {
            int a = 20;
            int b = 25;
            int result = add(a, b);
            Console.WriteLine(result);
            return;
        }
        [DebuggerStepThrough]
        static int add(int first, int second)
        {
            int sum = first + second;
            return sum;

        }

2、

参考:MSDN

        利用 Conditional 属性,程序员可以定义条件方法。Conditional 属性通过测试条件编译符号来确定适用的条件。当运行到一个条件方法调用时,是否执行该调用,要根据出现该调用时是否已定义了此符号来确定。如果定义了此符号,则执行该调用;否则省略该调用(包括对调用的参数的计算)。

条件方法要受到以下限制:

  • 条件方法必须是类声明或结构声明中的方法。如果在接口声明中的方法上指定 Conditional 属性,将出现编译时错误。
  • 条件方法必须具有 void 返回类型。
  • 不能用 override 修饰符标记条件方法。但是,可以用 virtual 修饰符标记条件方法。此类方法的重写方法隐含为有条件的方法,而且不能用 Conditional 属性显式标记。
  • 条件方法不能是接口方法的实现。否则将发生编译时错误。
  • 如果条件方法用在“委托创建表达式”中,也会发生编译时错误

Ps.尽量使用Conditional属性代替#if和#endif

[csharp] view plaincopy
  1. /*MyConditional.cs*/  
  2.   
  3. //#define DEBUG  
  4. using System;  
  5. using System.Diagnostics;  
  6. class Info  
  7. {  
  8.     //[Conditional("DEBUG")]  
  9.     public static void Trace(string strMessage)  
  10.     {  
  11.         Console.WriteLine(strMessage);  
  12.     }  
  13.   
  14.     [Conditional("DEBUG")]  
  15.     public static void TraceX(string strFormat,params object[] list)  
  16.     {  
  17.         Console.WriteLine(strFormat, list);  
  18.     }  
  19. }  
  20.   
  21. class TestConditional  
  22. {  
  23.     public static void Main()  
  24.     {  
  25.         Info.Trace("Cool!");  
  26.         Info.TraceX("{0} {1} {2}","C""U", 2001);  
  27.     }  
  28. }  
  29.   
  30. /* 
  31. 编译方式1: 
  32. csc /define:DEBUG /out:1.exe MyConditional.cs 
  33.  
  34. 运行结果1: 
  35. Cool! 
  36. C U 2001 
  37. */  
  38.   
  39. /* 
  40. 编译方式2: 
  41. csc /out:1.exe MyConditional.cs 
  42.  
  43. 运行结果2: 
  44. Cool! 
  45. */  
0 0