如何在Debug中显示ToString()

sgt*_*gtz 14 .net c# debugging visual-studio-debugging

我想在调试模式下让ToString()显示我控制下的类.

当你用鼠标悬停在一个变量上时,这是第一个出现的东西.这有属性吗?

Jal*_*aid 26

标记你的课程

[System.Diagnostics.DebuggerDisplay("{ToString()}")]
Run Code Online (Sandbox Code Playgroud)

测试:

[System.Diagnostics.DebuggerDisplay("{ToString()}")]
class MyClass
{
    private string _foo = "This is the text that will be displayed at debugging"

    public override string ToString()
    {
        return _foo;
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,当您将鼠标悬停在变量上时,它将显示This is the text that will be displayed at debugging.


Jon*_*Jon 7

DebuggerDisplayAttribute可以让你影响显示.它允许您编写相当复杂的表达式来生成调试输出,但不建议这样做.

但是,如果您已覆盖ToString,则会记录调试器以默认显示该调试器.也许代码有问题?

  • 如果`ToString()`抛出**异常**,那么VS调试器将不会显示该值.`DebuggerDisplayAttribute`将强制显示异常消息.但通常你不应该这样做. (4认同)

Big*_*n73 7

我有类似的问题。我的类有一个 ToString() 重写,但它仍然没有出现在 VS 中,这很奇怪。

将属性 [System.Diagnostics.DebuggerDisplay("{ToString()}")] 添加到类中会在 Visual Studio 调试器中显示异常,而 ToString 应该显示在其中。事实证明,我在实现中遇到了错误使用 string.Format() 的错误。这是一个有趣的行为 - VS 在发生异常时恢复默认的 ToString。使用上述属性会强制显示该方法的输出 - 有效或异常。这对于调试 ToString() 非常有用。否则,没有必要向每个类显式添加此属性,因为类默认打开该属性,除非出于某种原因想要关闭此行为。


Zeb*_*ebi 5

的输出ToString应该是调试时看到的默认值。

可以使用DebuggerDisplayAttribute 覆盖它(请参阅MSDN)。

我更喜欢重写该ToString方法,因为它更简单,更通用,因为它在写入日志文件时也有帮助。

您看到什么输出?如果获得类型名称,则会看到默认名称ToString