阻止 Visual Studio 2019 不断评估 ToString()

Stop Visual Studio 2019 from constantly evaluating ToString()

重现我的问题:

  1. 将以下代码粘贴到 Visual Studio 2019 年新的 C# .NET Framework 控制台应用程序中。
  2. 在行上打断点_Bar = null
  3. 开始调试
  4. 在断点处,将鼠标悬停在 _Bar 上以查看其值
  5. 越过
  6. 越过
  7. 抛出异常

看起来 Visual Studio 正在不断评估 ToString() 方法,导致 _Bar 尽管将其设置为 null,但始终具有值 FooBar。有办法阻止它吗?该问题 在 Visual Studio 2013 年无法重现。我正在使用 Visual Studio Community 2019 版本 16.0.1.

    using System;

    namespace FooBar {
        class Program {
            static void Main(string[] args) {
                new Foo();
            }

            class Foo {
                string _Bar;
                public string Bar {
                    get {
                        if (_Bar == null) {
                            _Bar = "FooBar";
                        }
                        return _Bar;
                    }
                    set {
                        _Bar = value;
                    }
                }

                public Foo() {
                    _Bar = null;
                    if (_Bar != null) {
                        throw new Exception("_Bar is not null.");
                    }
                }

                public override string ToString() {
                    return Bar;
                }
            }
        }
    }

问题的解决方法是在通用调试选项中禁用属性评估

编辑:如果您没有带有 属性 的手表 window,则问题的另一种解决方案。