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

问题描述 投票:0回答:1

重现我的问题:

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

看起来Visual Studio正在不断评估ToString()方法,导致_Bar始终具有值FooBar尽管将其设置为null。有办法阻止它吗?该问题在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;
                }
            }
        }
    }
c# visual-studio visual-studio-2019
1个回答
0
投票

该问题的解决方案是在常规调试选项中禁用属性评估

enter image description here

编辑:如果您没有包含该属性的Watch窗口,则问题的另一个解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.