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

如何使字段仅在C#中调试?,c#,.net,debugging,C#,.net,Debugging,同一个C#类实例在多个地方使用时遇到了问题。我希望能够在调试器中一目了然地判断哪个实例是哪个实例,因此我添加了一个名为DebugUID的字段,如下所示: public readonly string DebugUID = Guid.NewGuid().ToString(); 我还向类中添加了属性[DebuggerDisplay(“DebugUID={DebugUID}”)] 我希望编译器在发布模式下忽略DebugUID字段。如果它是一个方法,我会在它前面添加[条件(“调试”)],但它不允许我对

同一个C#类实例在多个地方使用时遇到了问题。我希望能够在调试器中一目了然地判断哪个实例是哪个实例,因此我添加了一个名为
DebugUID
的字段,如下所示:

public readonly string DebugUID = Guid.NewGuid().ToString();
我还向类中添加了属性
[DebuggerDisplay(“DebugUID={DebugUID}”)]

我希望编译器在发布模式下忽略DebugUID字段。如果它是一个方法,我会在它前面添加
[条件(“调试”)]
,但它不允许我对字段这样做。如何使字段仅在C#中调试?

C#具有与C/C++类似的条件编译特性。您可以使用
#if
语句和编译指令(如
DEBUG
)来完成此操作

#if DEBUG
public readonly string DebugUID = Guid.NewGuid().ToString();
#endif
由于默认情况下只有“Debug”配置定义
Debug
指令,因此这将仅在调试模式下编译。在释放模式下,
#if
中的代码将被忽略。

尝试使用“预处理器”指令#如果:


不过,您必须确保为调试版本设置了调试标志(当然,为发布版本设置了取消设置)。

您可以使用条件预处理器include

#if DEBUG
private readonly string debugId = Guid.NewGuid().ToString();
#endif

我可以推荐一种使用调试器而不是编写代码的替代方案吗


右键单击“监视”窗口中的实例,然后选择“指定对象ID”。现在,该对象将在整个调试会话中以该ID显示。对于您感兴趣的同一类的其他实例,请重复上述操作。

我认为在这种情况下我无法做到这一点,至少一开始不能做到这一点-有太多问题的对象-但感谢您让我了解该功能!
#if DEBUG
private readonly string debugId = Guid.NewGuid().ToString();
#endif