条件(三元)算子的条件

时间:2016-10-27 13:40:29

标签: c# if-statement 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
}

我可以使用三元运算符实现此目的吗?如果没有,应该做什么?

3 个答案:

答案 0 :(得分:9)

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

但我支持我的评论:这比if-else更难理解。

或者,可能,

a = UnitType ?? ElevationType ?? StructureType;

如果您熟悉??运算符,则相当清楚。

答案 1 :(得分:3)

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

??

你也可以null coalesce,这是a = UnitType == null ? (ElevationType ?? StructureType) : UnitType; 运算符,如果对象不为null,则返回它,如果它返回它,则返回它。

... "' AND Protected = '" + isBottomLevel + "' ";

答案 2 :(得分:1)

只需编写单独的方法,不要使用嵌套的public TypeOfA GetTypeOfAMethod() { if(UnitType != null) return UnitType; if(ElevationType != null) return ElevationType; if(StructureType != null) return StructureType return null; } 运算符,因为它对每个人都是痛苦的(不可读,提示错误)。如果明天您的类型延伸了2个类型,那么您的三元运算符将成为地狱。

{{1}}