return ship.DefenseType?.PropulsionMethod != null
? new BattleMethod(ship.DefenseType.PropulsionMethod)
: null;
嗨,我上面的当前return语句如果不为null,则返回Propulsion方法。但是,我的数据库有不同类型的 字段中前两个字母(PK,PA,PT等)表示的推进方法。
在进一步进入return语句之前,如何检查以确保PropulsionMethod以“ PK”开头?
在伪代码中,可能看起来像这样:
if (ship.DefenseType?.PropulsionMethod).startsWith("PK")
&& ship.DefenseType?.PropulsionMethod != null)
{
return new BattleMethod(ship.DefenseType.PropulsionMethod)
}
else
{
return null;
}
我尝试过
return ship.DefenseType?.PropulsionMethod != null &&
ship.DefenseType?.PropulsionMethod.StartsWith("PK")
? new BattleMethod(ship.DefenseType.PropulsionMethod)
: null;
但是我得到这个错误:
运算符&&不能应用于bool和bool类型的操作数吗?
答案 0 :(得分:1)
只需添加此条件:
return ship.DefenseType?.PropulsionMethod != null
&& ship.DefenseType?.PropulsionMethod.StartsWith("PK")
? new BattleMethod(ship.DefenseType.PropulsionMethod) : null;
由于运算符为&&
,因此如果第一个条件为true(在这种情况下不为null),则将评估第二个条件。
答案 1 :(得分:1)
您可以直接将可为空的布尔值与true
进行比较:
return ship.DefenseType?.PropulsionMethod?.StartsWith("PK") == true
? new BattleMethod(ship.DefenseType.PropulsionMethod)
: null;