【问题标题】:What is = i < 10 ? "0" + Convert.ToString(i) : Convert.ToString(i) - C# [duplicate]什么是 = i < 10 ? “0”+ Convert.ToString(i):Convert.ToString(i) - C# [重复]
【发布时间】:2019-03-11 11:19:55
【问题描述】:

以前从未见过这样的事情。特别是第 4 行。 目前我了解:

位置 i-1 的天数数组获取值...

除了 + 的连接之外,我不知道除了 = 符号之外的任何内容。

public String[] months() {
        String[] days = new String[12];
        for (int i = 1; i <= 12; i++) {
            days[i - 1] = i < 10 ? "0" + Convert.ToString(i) : Convert.ToString(i);
        }
        return days;
    }

还有为什么有 2 个皈依者?

进一步查看其他代码,我认为开发人员复制并粘贴了以前的代码。天数数组应该是几个月,因为有 12 个月。


已解决

谢谢,以前从未见过三元运算符。谢谢!

public String[] months() {
        String[] months = new String[12];
        for (int i = 1; i <= 12; i++) {
            /* faster way of saying */
            /* if i < 10 {} else {} */
            /* if condition is met do everything before the :, else do everything after */

            /* checks for 10 because months can be 1 or 2 digits, 0-9, then 10-12 */
            /* single digits concatenated to the 0 */
            /* double digits replace the 0 */
            months[i - 1] = i < 10 ? "0" + Convert.ToString(i) : Convert.ToString(i);
        }
        return months;
    }

【问题讨论】:

  • 只执行了一个“转换”:either "0" + Convert.ToString(i) or Convert.ToString(i)。听起来你问的是C#ternary operator,它来自C语言,也被用于Java、Javascript等多种语言中。
  • 这是几个问题。让我们从 三元运算符 开始(您可以search 了解这个术语并找到很多有用的信息),因为它是您在这里发现的最外层的语言结构。掌握它,然后你会看到问题行的不同子句,如果它们仍然有问题,你可以问另一个问题。
  • 仅供参考,官方名称是条件运算符,恰好是唯一的三元运算符(意​​味着它有 3 个操作数)

标签: c#


【解决方案1】:

这是三元运算符。如果前面的表达式?符号为真,结果将是 ? 之后的值符号,否则为冒号后的值。

此代码将前导零添加到值。如果该值小于 10,则该值变为“0”+该值,因此 9 变为“09”等等。

【讨论】:

    【解决方案2】:

    这是conditional operator,也称为三元条件运算符。

    这是...的简写

    if (i < 10)
    {
        days[i - 1] = "0" + Convert.ToString(i);
    }
    else
    {
        days[i - 1] = Convert.ToString(i);
    }
    

    代码基本上是在单个数字前面加上一个“0”。

    【讨论】:

      【解决方案3】:

      ?: 是简写

      如果i &lt; 10

      days[i-1] = "O" + Convert.ToString(i)

      否则

      days[i-1] = Convert.ToString(i)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-17
        • 2012-11-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-17
        • 1970-01-01
        • 2017-06-19
        相关资源
        最近更新 更多