我想了解这个变量赋值中发生了什么。我想了解这个变量赋值中发生了什么
num = forward.Data.Key >= key ? 1 : 0;
特别地,这部分>= key ? 1 : 0
为了帮助了前进是LinkedListCell<KeyValuePair<int, double>> forward = _data.Next;
key
是被传递到方法int参数。
而且它是用C#编写
我想了解这个变量赋值中发生了什么。我想了解这个变量赋值中发生了什么
num = forward.Data.Key >= key ? 1 : 0;
特别地,这部分>= key ? 1 : 0
为了帮助了前进是LinkedListCell<KeyValuePair<int, double>> forward = _data.Next;
key
是被传递到方法int参数。
而且它是用C#编写
这是三元运算符。它采用布尔表达式,并根据该表达式的结果返回两个值中的一个。你用多种语言获得它。
它等同于:
if(forward.Data.Key >= key) {
num = 1;
}
else {
num = 0;
}
我从来没有听到过这个名字的共识。也许它在不同的语言中有不同的名称......就我个人而言,我一直称它为* query-colon *操作符,但显然没有其他许多操作符......所以我不再在我的答案中使用这个短语。 =) – paddy
它被称为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";
它被称为“条件运算符” - http://msdn.microsoft.com/en-us/library/ty67wk28%28v=vs.110%29.aspx – Enigmativity
为什么downvote?我知道这是一个基本问题,但是三元条件运算符很难识别,除非你知道它是什么,而且很难搜索。 – Malcolm
如果您搜索'c#问号'的stackoverflow,则不需要仔细阅读任何重复的问题,其中大多数问题都是因重复而关闭的。 – paddy