在大型项目中使用哪个更好,为什么更好:
#if DEBUG
public void SetPrivateValue(int value)
{ ... }
#endif
Run Code Online (Sandbox Code Playgroud)
要么
[System.Diagnostics.Conditional("DEBUG")]
public void SetPrivateValue(int value)
{ ... }
Run Code Online (Sandbox Code Playgroud) 我有一些代码中充斥着类似于以下的调试表达式:
System.Diagnostics.Debug.WriteLine(System.BitConverter.ToString(data.Take(32).ToArray()));
Run Code Online (Sandbox Code Playgroud)
我能做些什么来防止发布版本评估System.BitConverter.ToString(data.Take(32).ToArray())?
我添加了自己的调试类,允许我WriteLine()根据我想要的报告级别来控制调用,但即使在发布模式下,这两种方法也会评估 Linq 和字符串转换(不是吗)?
---稍后添加---
正如我上面所说,代码中有很多这样的行,我并不特别想把#if DEBUG它们全部都写出来。
我想知道如何避免在 Release 模式下评估 Linq 和 BitConverter,我认为这会影响性能。