如何使字段在C#中仅调试?

Sim*_*mon 3 .net c# debugging

我遇到了在多个地方使用的同一个C#类实例.我希望能够在调试器中一眼就看出哪个实例是哪个,所以我添加了一个名为DebugUIDlike 的字段:

public readonly string DebugUID = Guid.NewGuid().ToString();
Run Code Online (Sandbox Code Playgroud)

我还在[DebuggerDisplay("DebugUID= {DebugUID}")]课堂上添加了属性.

我希望编译器在发布模式下忽略DebugUID字段.如果它是一种方法,我会[Conditional("Debug")]在它之前添加,但它不会让我为字段做.如何使字段在C#中仅调试?

Ada*_*son 14

C#具有类似于C/C++的条件编译功能.您可以将#if语句与编译指令一起使用,DEBUG以实现此目的.

#if DEBUG
public readonly string DebugUID = Guid.NewGuid().ToString();
#endif
Run Code Online (Sandbox Code Playgroud)

因为默认情况下只有"Debug"配置定义了DEBUG指令,所以这只会在Debug模式下编译.在发布模式下,#if将忽略其中的代码.