【问题标题】:Using the ternary operator to return lowest value from three variables使用三元运算符从三个变量中返回最小值
【发布时间】:2012-01-30 09:36:17
【问题描述】:

我有三个变量,都是整数。

indexA
indexB
indexC

现在,使用三元运算符,如何返回三个中的最小值?

【问题讨论】:

  • 为什么会有这样的要求(三元运算符)?这是作业吗?

标签: c# ternary-operator


【解决方案1】:

以下

result = indexA < indexB ? Min(indexA, indexC) : Min(indexB, indexC);

应该做你想做的,假设你可以使用其他运算符和方法......

【讨论】:

    【解决方案2】:

    试试

    var lowestVal = (indexA < indexB ? indexA : indexB) < indexC ? (indexA < indexB ? indexA : indexB) : indexC;
    

    【讨论】:

      【解决方案3】:

      必须是三元运算符吗?使用Min&lt;&gt;() 似乎更简单。

      [TestMethod]
      public void FindMinimum() {
      
          int indexA = 6;
          int indexB = 7;
          int indexC = 1;
      
          Assert.AreEqual(1, new[] { indexA, indexB, indexC }.Min());
      
      }
      

      【讨论】:

      • 嗯,我在考虑代码的简单性。但性能也是我所需要的。
      • 这样慢吗?如果速度较慢,差异是否足以引起注意?
      • 我没有测试过它的速度。
      • 比较3个项目不会慢,所以为了简单起见,我会用IEnumerable.Min()
      • @TomislavMarkovski,您的建议似乎更加简洁。但我没有测试过它的速度。但应该足够快!
      猜你喜欢
      • 1970-01-01
      • 2020-02-09
      • 2017-03-28
      • 2021-10-24
      • 2018-10-20
      • 2018-07-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多