Я в основном разработчик C ++, но недавно я работал над проектом на C #.Сегодня я столкнулся с неожиданным поведением, по крайней мере для меня, при использовании инициализаторов объектов.Я надеюсь, что кто-то здесь может объяснить, что происходит.
Пример A
public class Foo {
public bool Bar = false;
}
PassInFoo( new Foo { Bar = true } );
Пример B
public class Foo {
public bool Bar = true;
}
PassInFoo( new Foo { Bar = false } );
Пример A работает так, как я ожидал.У объекта, переданного в PassInFoo, для Bar установлено значение true.Однако в примере B для foo.Bar задано значение true, несмотря на то, что ему присвоено значение false в инициализаторе объекта.Что может привести к тому, что инициализатор объекта в Примере B будет игнорироваться?