Я настроил простую программу, чтобы просто проверить, как выполняется код внутри метода доступа get (поскольку у меня были некоторые проблемы в другом проекте), и обнаружил нечто довольно странное:
class Program {
static void Main(string[] args) {
var test = new TestClass();
var testBool = test.TestBool;
}
}
public class TestClass {
private bool _testBool = true;
public bool TestBool {
get {
if (_testBool) {
Console.WriteLine("true!");
} else {
Console.WriteLine("false! WTF!");
}
_testBool = false;
return _testBool;
}
}
}
Я ожидал, что результат будет
верно!
Но вместо этого я получил
верно!
ложь! WTF!
Что здесь происходит?