【发布时间】: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)orConvert.ToString(i)。听起来你问的是C#ternary operator,它来自C语言,也被用于Java、Javascript等多种语言中。 -
这是几个问题。让我们从 三元运算符 开始(您可以search 了解这个术语并找到很多有用的信息),因为它是您在这里发现的最外层的语言结构。掌握它,然后你会看到问题行的不同子句,如果它们仍然有问题,你可以问另一个问题。
-
仅供参考,官方名称是条件运算符,恰好是唯一的三元运算符(意味着它有 3 个操作数)
标签: c#