阻止 Visual Studio 2019 不断评估 ToString()
Stop Visual Studio 2019 from constantly evaluating ToString()
重现我的问题:
- 将以下代码粘贴到 Visual Studio 2019 年新的 C# .NET Framework 控制台应用程序中。
- 在行上打断点
_Bar = null
- 开始调试
- 在断点处,将鼠标悬停在
_Bar
上以查看其值
- 越过
- 越过
- 抛出异常
看起来 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,则问题的另一种解决方案。
重现我的问题:
- 将以下代码粘贴到 Visual Studio 2019 年新的 C# .NET Framework 控制台应用程序中。
- 在行上打断点
_Bar = null
- 开始调试
- 在断点处,将鼠标悬停在
_Bar
上以查看其值 - 越过
- 越过
- 抛出异常
看起来 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,则问题的另一种解决方案。