stellte ich nur ein einfaches Programm, bis zu testen, wie der Code innerhalb eines get-Accessor ausführt (da ich in einem anderen Projekt einige Probleme gehabt hatte), und fand etwas ganz merkwürdig:Seltsame Ausführung von Get Accessor in C#?
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;
}
}
}
ich den Ausgang zu erwarten be
wahr!
Aber was ich bekam, war stattdessen
wahr!
falsch! WTF!
Nur was ist hier los?
Sie führen das Programm im Debugger? Der Debugger wird Eigenschaft Getter hinter Ihrem Rücken aufrufen. –
Warum haben Sie diese Frage nach dem Löschen erneut? Die Lösung ist wahrscheinlich die gleiche "IDE führt die Accessor, weil es erwartet, dass es keine Nebenwirkungen hat "Ding. –
entfernen Sie' test.TestBool' aus der Uhr oder führen Sie die Anwendung ohne Debugging. –