是否清潔王牌表現這裏:使用IF ... ELSE VS如果()
版本1:
Function MyFunc(ByVal param as String) As String
Dim returnValue as String
If param Is Nothing Then
returnValue = "foo"
Else
returnValue = param
return returnValue
版本2:
Function MyFunc(ByVal param as String) As String
return If(param,"foo")
版本1所直接涉及拆箱String
秒。版本2處理所有盒裝Object
s。 [IF()需要的testexpression作爲對象,一個FalsePart爲對象,並返回一個對象]
[可以不加評論]
COMMENT:ja72,固定我的命名。
評論:馬克,所以你會去與版本2?
有沒有這樣的事情作爲盒裝/拆箱字符串 - 裝箱只適用於作爲`對象`訪問的值類型。字符串是引用類型,但也有**有**沒有`對象`那裏。最後,VB沒有一個空合併運算符嗎?在C#中,這將只是`返回參數? 「foo」;` – 2011-02-08 20:13:08
@馬克礫石+1。 VB.Net有??,你正在看。如果(OBJ1,OBJ2)。 :) – 2011-02-08 20:20:01
請參閱http://stackoverflow.com/questions/4619593/is-the-null-coalesce-operator-thread-safe - 這是C#,但應該有見地(見第一個答覆)。你也可以做同樣的檢查VB.NET IL。 – 2011-02-08 21:00:12