Ich bin in erster Linie ein C++-Entwickler, aber in letzter Zeit habe ich an einem Projekt in C# gearbeitet. Heute bin ich bei der Verwendung von Objektinitialisierern auf ein zumindest für mich unerwartetes Verhalten gestoßen. Ich hoffe, dass jemand hier erklären kann, was hier los ist.
Beispiel A
public class Foo {
public bool Bar = false;
}
PassInFoo( new Foo { Bar = true } );
Beispiel B
public class Foo {
public bool Bar = true;
}
PassInFoo( new Foo { Bar = false } );
Beispiel A funktioniert so, wie ich es erwarten würde. Das an PassInFoo übergebene Objekt hat Bar auf true gesetzt. In Beispiel B wird jedoch foo.Bar auf true gesetzt, obwohl im Objektinitialisierer false zugewiesen wurde. Was könnte dazu führen, dass der Objektinitialisierer in Beispiel B scheinbar ignoriert wird?