在继续操作之前检查前两个字符的return语句

时间:2018-09-18 18:05:36

标签: c# asp.net

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类型的操作数吗?

2 个答案:

答案 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;