相关疑难解决方法(0)

#if DEBUG vs.条件("DEBUG")

在大型项目中使用哪个更好,为什么更好:

#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)

c# debugging preprocessor debug-symbols

416
推荐指数
6
解决办法
28万
查看次数

在发布版本 (C#) 中如何停止对调试函数调用中的参数求值

我有一些代码中充斥着类似于以下的调试表达式:

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,我认为这会影响性能。

c# debugging release visual-studio

4
推荐指数
1
解决办法
467
查看次数