使用对象初始化器,是否可以选择性地设置属性?
例如:
Request request = new Request
{
Property1 = something1,
if(something)
Property2 = someting2,
Property3 = something3
};
使用对象初始化器,是否可以选择性地设置属性?
例如:
Request request = new Request
{
Property1 = something1,
if(something)
Property2 = someting2,
Property3 = something3
};
Request request = new Request
{
Property1 = something1,
Property3 = something3
};
if(something)
request.Property2 = someting2;
如果有默认值或者null值,您也可以这样做:
Request request = new Request
{
Property1 = something1,
Property2 = something ? someting2 : null,
Property3 = something3
};
不,对象初始化程序被转换为一系列简单的设置语句。
显然,您可以通过一些技巧来实现类似的效果,例如将属性设置为您知道默认值是什么(例如new Request { Property2 = (something ? something2 : null) }
),但是setter仍将被调用--当然,如果Request的实现者决定更改属性的默认值,这将产生意想不到的后果。因此最好避免这种技巧,通过以旧的预对象初始化程序方式编写明确的设置语句来进行任何条件初始化。
Foo foo = new Foo { One = "", Two = (true ? "" : "bar"), Three = "" };