条件(三元)算子中的条件

本文关键字:条件 三元 | 更新日期: 2023-09-27 18:15:10

如何使用三元运算符实现这一点?

if(UnitType == null)
{
    a = ElevationType
}
else
{
    a = UnitType
}

三元算子

a = UnitType == null ? ElevationType : UnitType;

现在我想要类似的东西

if(UnitType == null)
{
   if(ElevationType == null)
   {
    a = StructureType
   }
   else{
    a = ElevationType
   }
}
else
{
    a = UnitType
}

我可以使用三元运算符实现这一点吗?如果没有,该怎么办?

条件(三元)算子中的条件

a = (UnitType == null) ? (ElevationType ?? StructureType) : UnitType;

但我坚持我的评论:这比其他情况更难理解。

或者,可能是

a = UnitType ?? ElevationType ?? StructureType;

如果您熟悉??运算符,这一点就相当清楚了。

如果你需要用三元运算符来做这件事,你可以像这个一样格式化它以获得更好的清晰度

a = UnitType == null ?
    (ElevationType == null ?
        StructureType
        : ElevationType)
    : UnitType;

您也可以使用null coalize,这是??运算符,它表示如果对象不是null,则返回它,如果是,则返回this。

a = UnitType == null ?
    (ElevationType ?? StructureType)
    : UnitType;

只需编写单独的方法,不要使用嵌套的?运算符,因为这对每个人来说都是痛苦的(不可读,提示错误(。如果明天你的类型再扩展2个类型,你的三元运算符会变成地狱。

public TypeOfA GetTypeOfAMethod()
{
    if(UnitType != null)
       return UnitType;
    if(ElevationType != null)
       return ElevationType;
    if(StructureType != null)
       return StructureType
    return null;
}