爲什麼在VB中要求不處理條件的直接轉換時纔有條件。例如,在C#這是蠻好的......如果C#和VB中存在差異,則條件爲
bool i = false;
i = (1<2)? true:false;
int x = i? 5:6;
但是,如果我在VB想同樣的事情,我會投它
Dim i as Boolean = CBool(IIF(1<2, True, False))
Dim x as Integer = CInt(IIF(i, 5, 6))
我不明白爲什麼C#會做轉換以及爲什麼VB沒有。 應該我在我的C#來鑄造條件語句,例如
bool i = Convert.ToBoolean((1<2)? True: False);
int x = Convert.ToInt32(i? 5:6);
而且,是的,我知道,IIF返回類型的對象,但我會假設,C#確實還有可以返回不僅僅是真多|假;在我看來,C#處理隱式轉換。
'IIF'是一個傳統的VB函數;嘗試使用更新的'If'運算符,它的工作原理與你期望的一樣:'Dim i As Boolean = If(1 <2,True,False)' – Plutonix 2014-09-24 15:54:41
'<'運算符(以及所有其他比較運算符)已經返回是真是假,請不要這樣做:'(1 <2)? true:false;' – 2014-09-24 15:55:53
謝謝大家的信息:)是的@BrianDriscoll我通常不會這樣做我試圖展示我的意思的快速邏輯 - 謝謝你,雖然爲確保。 – alykins 2014-09-24 16:28:16