2013-05-05 125 views
-3

我只是通過一些朋友的代碼讀取和寫入的測試工具,而我已經遇到東西是竊聽我:「?」'?'是什麼意思?角色做這個操作?

Console.WriteLine(inputString + (isPalindrome(inputString) ? displayConditions(" some text 1", 
ConsoleColor.Black) : displayConditions("some text 2", ConsoleColor.White))); 

什麼的符號在這個操作中做?

對於被調用的內容的一般描述將不勝感激。我似乎無法在網上或任何我擁有的書籍中找到答案。

+3

http://msdn.microsoft.com/en-us/library/ty67wk28(v=vs.80).aspx – 2kay 2013-05-05 21:12:01

+0

謝謝你我不知道我怎麼在msdn上找不到那個哈哈! – 2013-05-05 21:13:22

+0

這就是[條件運算符':'](http://msdn.microsoft.com/en-us/library/ty67wk28.aspx)。通常稱爲「三元運算符」,因爲它是C#支持的唯一三元運算符(具有三個參數的運算符)。 – CodesInChaos 2013-05-05 21:16:06

回答

5

這將是三元運營商。

x ? y : z應該讀作

if (x) 
    y; 
else 
    z; 
+3

從技術上講,** a **,不是**,三元運算符。這是*條件*運算符,否則稱爲*?:*運算符。 – 2013-05-05 21:15:38

+0

我同意在技術上它是「一」而不是「三元」操作符。這讓我想到了,但我正在畫一片空白。還有哪些三元運營商? – unxnut 2013-05-05 21:37:44

+0

無,AFAIK。[](http://www.google.com) – 2013-05-05 21:39:30

4

它被稱爲Conditional Operator

這是寫在那裏,你需要根據比較結果賦值條件的簡潔的方式

實際上就意味着

result = (evaluate a condition) ? (expression to return if the condition is true) : 
            (expression to return if the condition is false) 
+3

從技術上講,它是*條件運算符*,它恰好是一個三元運算符。 – 2013-05-05 21:15:08

+2

是的,最近VB太多了 – Steve 2013-05-05 21:18:27

+0

非常感謝。定時器允許時接受你的答案。 – 2013-05-05 21:18:56

0

這是三元運算符。它用於替換涉及if {} else {}的語句。

因此,例如,而不是做這樣的事情:

bool value = false; 
string myString; 
if (value){ 
    myString = "something"; 
else{ 
    myString = "something else"; 
} 

你可以這樣做:

string myString = (value) ? "something" : "something else"; 

如果?前的狀態爲真:之前的表達式將被評估,否則, :之後的表達式將被評估。

這也可以被用於回報:

return (myCondition) ? "yes" : "no"; 
1

這就是conditonal operator

它通常也被稱爲「三元運算符」,但這隻意味着具有三個操作數的運算符。這並沒有說明操作符是什麼,但它是C#中唯一具有三個操作數的操作符。