我編寫了這個嵌套的IIF語句來確定包含URL的字符串是否包含http://或https://以便我可以包含它必要。我的嵌套的IIF語句沒有在VB.NET中修改字符串
IIf(urlLong.Contains("http://"), Nothing, _
IIf(urlLong.Contains("https://"), Nothing, _
urlLong = "http://" + urlLong))
但是,當運行這個我得不到結果。我試圖重新寫它以獲得儘可能簡單的IIF聲明,但即使這樣也無法按預期工作。
IIf(urlLong.Contains(urlLong), Nothing, urlLong = "http://" + urlLong)
這會導致我相信我不太瞭解IIF聲明如何工作。我得到的代碼創建一個功能起作用添加的「http://」,現在我的代碼看起來像這樣
IIf(urlLong.Contains("http://"), urlLong = urlLong, _
IIf(urlLong.Contains("https://"), urlLong = urlLong, _
addHttp(urlLong)))
凡addHttp需要urlLong的ByRef,並增加了HTTP://
Private Function addHttp(ByRef urlLong As String) As String
urlLong = "http://" + urlLong
Return urlLong
End Function
所以,我的問題是,爲什麼第一個IIf聲明不能在第二個聲明中工作,並且有沒有其他方法可以做到這一點,這會被認爲是更好的「最佳實踐」?
不要在VB.NET中使用IIF,具有短路評估的三元運算符是_IF(expression,true,false)_ – Steve