我主要是一名C++开发人员,但最近我一直在用C#开发一个项目.今天我在使用对象初始化器时遇到了一些意外的行为,至少对我来说是这样.我希望这里有人可以解释发生了什么.
例A
public class Foo {
public bool Bar = false;
}
PassInFoo( new Foo { Bar = true } );
Run Code Online (Sandbox Code Playgroud)
例B
public class Foo {
public bool Bar = true;
}
PassInFoo( new Foo { Bar = false } );
Run Code Online (Sandbox Code Playgroud)
示例A按照我的预期工作.传递给PassInFoo的对象将Bar设置为true.但是,在示例B中,尽管在对象初始值设定项中赋值为false,但foo.Bar设置为true.什么会导致示例B中的对象初始化程序看似被忽略?