Воспроизвести мою проблему:
- Вставьте следующий код в новое консольное приложение C # .NET Framework в Visual Studio 2019.
- Поместить точку останова на линию
_Bar = null
- Начать отладку
- В точке останова наведите курсор на
_Bar
, чтобы увидеть его значение
- Перешагните
- Перешагните
- Исключение выдается
Похоже, что 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;
}
}
}
}