-5

我试图了解这个变量赋值中发生了什么。

num = forward.Data.Key >= key ? 1 : 0;

特别是这部分 >= key ? 1 : 0

帮助前进是一个LinkedListCell<KeyValuePair<int, double>> forward = _data.Next;

key是传递给方法的 int 参数。

它也是一个用 C# 编写的程序

4

2 回答 2

5

这就是三元运算符。它接受一个布尔表达式,并根据该表达式的结果返回两个值之一。您可以使用多种语言获得它。

它相当于:

if( forward.Data.Key >= key ) {
    num = 1;
}
else {
    num = 0;
}
于 2012-09-25T04:52:33.093 回答
3

它被称为ternary conditional operator。(或简短的If-Else陈述

value = condition ? truePart : falsePart;

三元运算符测试条件。它比较两个值。它产生取决于比较结果的第三个值。

来自 MSDN,

int input = Convert.ToInt32(Console.ReadLine());
string classify;

// if-else construction.
if (input < 0)
    classify = "negative";
else
    classify = "positive";

// ?: conditional operator.
classify = (input < 0) ? "negative" : "positive";
于 2012-09-25T04:51:50.763 回答