3

可能重复:
C# ?:条件运算符

有人可以解释一下“:”在这种情况下的作用吗?

var skupaj = dni + zacetniDan + (((dni + zacetniDan) % 7 != 0) ? 7 - ((dni + zacetniDan) % 7) : 0);
4

7 回答 7

8

:是三元运算符的一部分。它是if/else子句的简码。

例子: int a = b > 5 ? 2 : 3;

是相同的:

int a = 0;
if (b > 5)
{
    a = 2;
}
else
{
    a = 3;
}
于 2012-11-26T18:14:10.957 回答
4

? :是if / then / else 的条件运算符缩写形式

第一部分是条件应该在?表达式之前被评估为布尔值after ? is then part,并且当条件为真时expression after : is else part返回,并且当条件被评估为假时返回

于 2012-11-26T18:14:43.113 回答
4

它是一个三元运算符。

它是以下等效代码的简写:

int skupaj = dni + zacetniDan;

if ((dni + zacetniDan) % 7 != 0) {
    skupaj += 7 - ((dni + zacetniDan) % 7);
}
else {
    skupaj += 0;
}
于 2012-11-26T18:16:52.150 回答
2

(((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。

于 2012-11-26T18:14:54.893 回答
1

三元运算符。它允许您将条件值视为单个值。

这是一个将布尔值转换为字符串的基本示例

string str = myBool ? "true" : "false";

这相当于

string str
if(myBool)
    str = "true";
else
    str = "false";
于 2012-11-26T18:14:59.130 回答
1

这就是三元运算符: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

于 2012-11-26T18:15:25.890 回答
1

您可以通过拆分为 3?轻松理解一条线。:

  • 左边的项?是条件
  • 如果条件为真,应使用介于?和之间的术语:
  • :如果条件为假,则应使用后面的术语
于 2012-11-26T18:15:47.230 回答