2012-09-25 71 views
-5

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

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

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

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

key是被传递到方法int参数。

而且它是用C#编写

+0

为什么downvote?我知道这是一个基本问题,但是三元条件运算符很难识别,除非你知道它是什么,而且很难搜索。 – Malcolm

+1

如果您搜索'c#问号'的stackoverflow,则不需要仔细阅读任何重复的问题,其中大多数问题都是因重复而关闭的。 – paddy

回答

5

这是三元运算符。它采用布尔表达式,并根据该表达式的结果返回两个值中的一个。你用多种语言获得它。

它等同于:

if(forward.Data.Key >= key) { 
    num = 1; 
} 
else { 
    num = 0; 
} 
+0

我从来没有听到过这个名字的共识。也许它在不同的语言中有不同的名称......就我个人而言,我一直称它为* query-colon *操作符,但显然没有其他许多操作符......所以我不再在我的答案中使用这个短语。 =) – paddy

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"; 
+0

它被称为“条件运算符” - http://msdn.microsoft.com/en-us/library/ty67wk28%28v=vs.110%29.aspx – Enigmativity