【问题标题】:Triple conditional in variable assignation变量赋值中的三重条件
【发布时间】:2019-01-18 17:32:40
【问题描述】:

我有一个简单的变量赋值,例如:

  var color = order == "PO" ? Color.LightGreen : Color.LightBlue;

我的问题是,是否可以添加另一个条件来执行三重条件,例如:

 var color = order == "PO" ? Color.LightGreen : "SO" ? Color.Lavender : Color.LightBlue;

所以我想说,如果订单等于“PO”,则返回 LightGreen,如果是“SO”,则返回 Lavender,如果两者不同,则返回 LightBlue。我怎样才能做到这一点?问候

【问题讨论】:

  • 我会说在 3 个以上的参数中,转向 switch 案例的理由开始急剧增长

标签: c#


【解决方案1】:

是的,在false部分使用一个附加条件,如图:

var color = order == "PO" ? Color.LightGreen : order == "SO" ? Color.Lavender : Color.LightBlue;

可读性很重要,那么当您遇到第四种情况时会发生什么?您可能只想简单地使用if/else 逻辑或switch

【讨论】:

    【解决方案2】:

    是的,你可以,但它变得难以阅读,请参阅 here 以获取嵌套三元组的示例。

    最好是switch:

      String order;
      Color color;
            switch (order)
            {
                case "PO":
                    color = Color.LightGreen;
                    break;
                case "SO":
                    color = Color.Lavender;
                    break;
                default:
                    color = Color.LightBlue;
                    break;
            }
    

    已编辑以将开关与您的情况相匹配;)

    【讨论】:

      【解决方案3】:

      三元链的末端可能看起来不错,您可以切换到经典的ifs 或前面提到的switch-case,但也可以考虑使用Dictionary<string, Color> 进行快速查找。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-01-26
        • 2018-03-25
        • 1970-01-01
        • 2013-07-14
        • 2017-02-27
        • 2012-08-23
        • 2023-04-03
        相关资源
        最近更新 更多