什么是= i <10? “ 0” + Convert.ToString(i):Convert.ToString(i)-C#

时间:2018-10-05 23:06:33

标签: c#

以前从未见过这样的事情。具体来说是第4行。 目前我了解:

在位置i-1的

days数组获取值...

除了=之外,除了+之外,我什么都不知道。

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;
    }

3 个答案:

答案 0 :(得分:2)

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

这是...的简写

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

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

?:是速记

如果i < 10

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

ELSE

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