2013-02-14 67 views
0

下面是代碼:案例AndAlso組合

Select Case ConnectionId 
    Case Is = 40113 AndAlso CompanyId= 88 

兩者都是真實的,是的ConnectionId 40113和CompanyId是88,但代碼去否則CASE ...

請告訴我這個問題?

回答

2

您應該將OPTION STRICT設置爲ON。然後這甚至不會編譯,因爲你試圖使用Integer作爲Boolean,這也是你的問題的原因。 40113將評估爲True因此40113 AndAlso CompanyId= 88也將評估爲True,但ConnectionId = True將評估爲False。 (你知道爲什麼你應該設置STRICT

使用的If-Else代替:

If ConnectionId = 40113 AndAlso CompanyId = 88 Then 
    ' ... ' 
Else 
    ' ... ' 
End If 

一般情況下:如果你想比較多個變量使用If - 而不是Select Case

+0

一些挑剔:* 40113將評估爲False與OPTION STRICT OFF * *:這是不正確的。它將評估爲「True」,因此「40113 AndAlso CompanyId = 88」也將評估爲「True」,但「ConnectionId = True」評估爲「False」。用'Option Strict Off'來愛VB.Net! – sloth 2013-02-14 09:16:54

+1

@DominicKexel:更正,謝謝。是的,Option Strict Off是一團糟,一種_random-programming_,你永遠不知道會發生什麼。我永遠不會關閉它,即使不是這樣的測試目的;) – 2013-02-14 09:25:46

+1

'Option Strict Off'有它使用(Office interop),但是如果你可以在塊級別使用它,而不是在文件級別使用它。 – sloth 2013-02-14 09:40:03