条件(三元)运算符中的条件

Condition in Conditional (Ternary) Operator

如何使用三元运算符实现它?

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;

但我坚持我的意见:这比 if-else 更难理解。

或者,可能,

a = UnitType ?? ElevationType ?? StructureType;

如果您熟悉 ?? 运算符,这就很清楚了。

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

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

    if(ElevationType != null)
       return ElevationType;

    if(StructureType != null)
       return StructureType

    return null;

}

如果您需要使用三元运算符来执行此操作,可以像这样对其进行格式化以便更清晰

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

你也可以空合并,这是??运算符,这表示如果对象不为空,return它,如果它是return这个。

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