2008-12-23 56 views
1

我總是看到一個字符串(查詢字符串值通常)是否有一個值,但首先我必須檢查它不是什麼第一,所以我最終得到2如果然後語句 - 我在這裏丟失somethign - 必須有一個更好的方式來做到這一點:檢查字符串爲空,然後在1行中確定值?

If Not String.IsNullOrEmpty(myString) Then 
    If CBool(myString) Then 
    //code 
    End If 
End If 
+0

只是建議,您應該使用Boolean.TryParse檢查有效的字符串/布爾轉換,然後使用Boolean.Parse實際解析出來。 爲了適應.Net,最好開始使用.Net方法而不是Visual Basic傳統的「助手」。 – 2008-12-24 02:55:04

+0

問題是我得到一個無效的轉換異常,因爲當應用Cbool時,myString沒有任何作用,這裏是錯誤:>從字符串「」轉換爲 >'Boolean'類型的轉換無效。 – Slee 2008-12-23 22:47:51

回答

4

在VB.Net中,並沒有短路,但AndAlso呢。

(同爲Or和OrElse運算)

所以,你的代碼應該看起來像

If Not String.IsNullOrEmpty(myString) AndAlso CBool(myString) Then 
    .... 
End If 
+0

我知道我錯過了一些簡單的東西 - 謝謝! – Slee 2008-12-23 23:03:55

+0

哇這麼多年,我知道我錯過了這個! – superartsy 2011-11-04 13:19:45

1

布爾邏輯「和」運營商在您所選擇的語言?條件通常會短路,所以如果第一個失敗,第二個不會運行/錯誤。

+0

你想檢查vb.net短路... vbscript沒有。 (巨大的煩惱) – alumb 2008-12-23 22:43:45

0

FYI這種類型的代碼完美適合作爲一種 「擴展方法」。簡而言之,這意味着您可以使用提供自己的代碼的方法來擴展字符串。

查看它:)

1

並且(如上所述)是最通用的答案。但是,你也可以使用各種方法的TryParse,這將使這樣的代碼:

Dim b as Boolean 
If Boolean.TryParse(myString, b) AndAlso b Then 
End If 

獎金,它會從出現FormatException當有人在你的查詢字符串「嗒嗒」將拯救你。

0

使用,如果使用.NET 2.0或更高版本的下列內容:

String.IsNullOrEmpty(thestringobject) 

的值爲true或false,具體。 我通常在工具類中創建另一個函數來檢查修剪/長度,以便知道字符串對象是否爲空,空白或一堆空白。