2015-10-08 38 views
-2

有人可以請告訴我什麼?運營商在線String broker = args.Length > 0 ? args[0] : "localhost:5672";的意思。我碰到它的時候我是通過this C# Example關於'?'的信息運算符在C#

MSDN Documentation似乎只具有對運營商?.???[

+5

https://msdn.microsoft.com/en-us/library/ty67wk28.aspx –

+0

?:是if else條件的快捷方式。 –

+0

我可以直言不諱地爲大多數人在這裏看到一個相對「簡單」的問題,實際顯示研究工作並清楚你在問什麼......不確定這是否值得downvotes – Sayse

回答

5

這是ternary運營商信息讀取

String broker = args.Length > 0 ? args[0] : "localhost:5672"; 

上面的語句是一樣的

if(args.Length > 0) 
    broker = args[0]; 
else 
    broker = "localhost:5672"; 
+0

儘管它們在邏輯上是等價的,但發射的IL稍有不同,看起來三元運算符允許在IL級別進行一些編譯器優化。當然這些都是微不足道的,代碼的可維護性應該是第一位的。 – Ananke

2

這不是一個 」?」運算符,它是「?:」 - 所謂的三元運算符。這裏是一個小的解釋MSDN

?:操作符可以用作if ... else語句的快捷方式。它通常用作較大表達式的一部分,其中if ... else語句會很尷尬

2

The?運營商本身只不過是if的一個捷徑。讓我們以你爲例:

String broker = args.Length > 0 ? args[0] : "localhost:5672" 

The?意味着如果。因此,所有的左邊是如果部分好嗎?是當時的一部分。而且:將其他部分與當時的部分分開。

所以把它放在一起,你也可以這樣寫:

String broker; 
if (args.Length > 0) 
{ 
    broker = args[0]; 
} 
else 
{ 
    broker = "localhost:5672"; 
} 

如果你使用它,或者不主要是一個品味的問題和代碼是如何更好的可讀性(如果你需要做的短羣衆如果只有一個在下一個?之後可以比完整書寫的方法更好的可讀性)。

1

這是

String broker; 

if (args.Length > 0) 
{ 
    broker = args[0]; 
} 
else 
{ 
    broker = "localhost:5672" 
} 

ternary運營商是平等的,但短了很多寫。

`test ? expression1 : expression2` 

回報expression1如果testexpression2如果測試是