Я в первую очередь разработчик на 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, казалось бы, игнорировался?