可能重复:
C# ?:条件运算符
有人可以解释一下“:”在这种情况下的作用吗?
var skupaj = dni + zacetniDan + (((dni + zacetniDan) % 7 != 0) ? 7 - ((dni + zacetniDan) % 7) : 0);
    可能重复:
C# ?:条件运算符
有人可以解释一下“:”在这种情况下的作用吗?
var skupaj = dni + zacetniDan + (((dni + zacetniDan) % 7 != 0) ? 7 - ((dni + zacetniDan) % 7) : 0);
    :是三元运算符的一部分。它是if/else子句的简码。
例子:
int a = b > 5 ? 2 : 3;
是相同的:
int a = 0;
if (b > 5)
{
    a = 2;
}
else
{
    a = 3;
}
    ? :是if / then / else 的条件运算符缩写形式
第一部分是条件应该在?表达式之前被评估为布尔值after ? is then part,并且当条件为真时expression after : is else part返回,并且当条件被评估为假时返回
它是一个三元运算符。
它是以下等效代码的简写:
int skupaj = dni + zacetniDan;
if ((dni + zacetniDan) % 7 != 0) {
    skupaj += 7 - ((dni + zacetniDan) % 7);
}
else {
    skupaj += 0;
}
    (((dni + zacetniDan) % 7 != 0) ? 7 - ((dni + zacetniDan) % 7) : 0);
这是一个三元表达式Condition?Expr1:Expr2
表达式的结果是Expr1ifCondition为 true 和 else 的结果Expr2。
在您的特定情况下,条件是
 ((dni + zacetniDan) % 7 != 0)
如果此条件为真,则三元子表达式的结果将是
 7 - ((dni + zacetniDan) % 7)
否则为 0。
三元运算符。它允许您将条件值视为单个值。
这是一个将布尔值转换为字符串的基本示例
string str = myBool ? "true" : "false";
这相当于
string str
if(myBool)
    str = "true";
else
    str = "false";
    这就是三元运算符:http: //msdn.microsoft.com/en-us/library/ty67wk28 (v=vs.80).aspx
if (dni + zacetniDan) % 7 != 0)is truethen 评估为7 - ((dni + zacetniDan) % 7)else 评估为0
您可以通过拆分为 3?轻松理解一条线。:
?是条件?和之间的术语::如果条件为假,则应使用后面的术语