ConditionalAttribute vs Debugger.IsAttached

时间:2012-02-27 19:53:36

标签: .net debugging attributes visual-studio-debugging

ConditionalAttribute和Debugger.IsAttached有什么区别? 哪种机制更好用?

如果我写:

[Conditional("DEBUG")]
private void Method() 
{ 
   //Code
} 

将是相同的:

private void Method()
{ 
    if (Debugger.IsAttached)
    { 
        //Code
    } 
}

1 个答案:

答案 0 :(得分:3)

该属性适用于编译。如果未设置DEBUG标志,则从生成的二进制文件中省略该方法。

附加调试器检查是否附加了调试器。但调试器可以附加到任何类型的构建(发布,调试等)

由于它们完全不同,我认为不能比较哪一个“更好”。他们做不同的事情。如果你想要一个对生产版本没有影响(例如性能)的调试版本的东西,那么使用该属性。