C# 检查断点时的其他输出

C# 检查断点时的其他输出,c#,visual-studio,C#,Visual Studio,在编写代码时,我发现结果与检查断点时的结果不同。可能的原因是ToString函数,它在重写时具有不同的结果。为什么在覆盖后检查断点时结果不同 检查断点时,在内部调用该函数,但不知道原因 我的代码 using System; namespace Test { class Program { static void Main(string[] args) { TestClass testClass = new TestCl

在编写代码时,我发现结果与检查断点时的结果不同。可能的原因是ToString函数,它在重写时具有不同的结果。为什么在覆盖后检查断点时结果不同

检查断点时,在内部调用该函数,但不知道原因

我的代码

using System;

namespace Test
{

    class Program
    {

        static void Main(string[] args)
        {
            TestClass testClass = new TestClass();
            Console.Write("Test");  // Break Point
            Console.ReadKey();

        }
    }

    public class TestClass
    {

        public override string ToString()
        {
            Console.WriteLine("???");
            return null;
        }
    }

}
结果如下

检查断点: ??? 试验

非:
Test

使用调试器检查testClass时,调试器将调用ToString。这印的是什么???到控制台。

您知道为什么调用ToString吗?因为它就是这样工作的:@최민규 为了显示文本值,调试器对每个感兴趣的对象使用ToString方法。在本例中,TestClass.ToString的一个副作用是写入控制台。如果调试器没有理由显示该值,即您没有使用“局部变量”窗口,请不要将鼠标悬停在变量testClass上,…,它可能不会调用testClass.ToString。