2015-04-17 89 views
-3

您好我有一個像使用三元運算符不使用轉讓或退回

bool isCompleted = true; 

if(isCompleted){x= 5} 

,所以我想用上面的代碼中使用三元運算符的一個問題,而無需使用回報或分配如

isCompleted ? int x = 5 : <do nothing>; 

因此,它是可以使用三元運算符而不使用返回或賦值?

謝謝。

+1

您必須在某個表達式中存儲或使用三元運算符的結果,否則我看不到使用三元運算符的要點。 – Adil

+0

你想做什麼?三元操作員在這裏完成什麼?爲什麼,如果你堅持喜歡問號,不僅僅是:'x = isCompleted? 5:0;' – TZHX

+0

這段代碼是示例代碼,並且按照我的要求,我不想使用賦值(x),因爲我只是想要這樣:true?

回答

1

閱讀關於三元操作的語法(MSDN):

條件運算符(:) 返回根據布爾表達式的值的兩個值中的一個。

所以,你的代碼必須rewriten爲:

x = isCompleted ? 5 : 0; 
+0

Yoh Deadfall this code is sample code and作爲我的要求,我不想使用賦值(x),因爲我只是想要:true?

+0

使用'if'運算符:'if(isCompleted)x = 5;' –

+0

是的,這是最終的解決方案,但我想三元,所以我可以優化我的代碼,無論如何謝謝 –

1

嘗試使用這樣的:

x = isCompleted ? intValue(if true) : intValue(if false); 

既然你已經宣佈xint,你必須提供值無論評估的條件如何,都可以使用int。您使用的任何其他類型的值不會在這裏工作。因此你寫的false是錯誤的。您可能想要在那裏提供int值。

如果您希望根據bool條件執行某些代碼邏輯,則可能需要在此處使用if...else,因爲這樣可以幫助您做的不僅僅是將一些值分配給變量。

希望這會有所幫助。

+0

HarveySpecter this code是示例代碼 和我的要求,我不想使用作業(x)作爲 我只想︰ true?<做新邏輯>:

+0

如果你想執行一些邏輯,而不是隻分配一些值到變量,你可能想使用'if'。這樣,當if條件爲真時,你可以執行任何你想要的邏輯,當它爲假時不做任何事情。總之,使用簡單的'if ... else'。 –

+0

是的,這是最終的解決方案,但我想三元,以便我可以優化我的代碼,無論如何謝謝。 –

2

您需要布爾值之前的賦值。

x = isCompleted ? 5: 0; 

其次,你有一個類型錯誤。以上將設置X = 5,如果isCompleted = TRUE,否則將設置X = 0

isComplete ? 5 :false 

將無法​​編譯,因爲你不能一個布爾值賦給一個int。

+0

Jon 由於我不想使用這個賦值運算符 –

+0

可以理解。如果情況如下所示,那麼if語句會更強。三級運營商很好,但有時候不合適。 – Jon

0

如果爲true,您希望將x設置爲5。否則保持x值?

x = isCompleted? 5:x: