2017-01-23 111 views
1

我是VB.net的新手,想要使用三元運算符。VB.Net中的三元操作符

If prefixDt IsNot Nothing AndAlso prefixDt.Rows.Count > 0 Then 
       Return True 
      Else 
       Return False 
      End If 

Myattempt:

Return (prefixDt IsNot Nothing AndAlso prefixDt.Rows.Count > 0) ? True: False

錯誤:?不能在這裏使用。

+1

返回(prefixDt IsNot Nothing AndAlso prefixDt.Rows.Count> 0)...返回true或false。不需要? : – nabuchodonossor

+0

令人印象深刻。我去做。但只是爲了學習目的,如何實現我所要求的。 – Unbreakable

+0

檢查此http://stackoverflow.com/questions/576431/is-there-a-conditional-ternary-operator-in-vb-net出 –

回答

2

它使用的是三元(條件)運算符

return If (prefixDt IsNot Nothing AndAlso prefixDt.Rows.Count > 0, True, False) 

一個襯墊但是,如果你需要立即返回,你可以簡單的測試,如果布爾表達式爲true或false

return (prefixDt IsNot Nothing AndAlso prefixDt.Rows.Count > 0) 
1

VB。 NET在2008年之前沒有三元運營商。它確實具有三元函數,IIf(cond, truePart, falsePart),但是作爲函數,truePartfalsePart都將在函數決定返回之前被評估。

在VB.NET 2008中引入了一個新的運算符,該運算符提供了與C語言中的cond ? truePart : falsePart三元運算符相同的功能。該操作員使用If關鍵字,並與函數樣的語法表達:

safeQuotient = If(divisor <> 0, dividend/divisor, Double.PositiveInfinity) 

在這個例子中,dividend/divisortruePart是即使divisor是零,因爲如果divisor爲零安全的,truePart完全被忽略,並且不會發生零除。

對於你的榜樣,正如指出的@nabuchodonossor,你只會被轉換一個布爾值,已經TrueFalse到同一TrueFalse價值,但對於完整性,您可以準確地寫出來的@ Steve顯示:

Return If(prefixDt IsNot Nothing AndAlso prefixDt.Rows.Count > 0, True, False)