2012-12-12 52 views
1

我試圖在if語句中檢查以下條件。 但是,即使條件滿足,if語句下的代碼也不會執行。條件得到滿足,但if語句下的代碼不會執行

If (Gnum(0, 0) = Rnum(0, 0) & Gnum(0, 1) = Rnum(0, 1) & Gnum(0, 2) = Rnum(0, 2)) Then 
    Lbl_Msg.Text = "Send Msg" 
End If 
+0

我不是VB專家,只是一般說明: 檢查運算符用法'=','&'及其優先級。 (0,0)= Rnum(0,0)&Gnum(0,1)= Rnum(0,1)'被評估爲'Gnum(0,0)=( Rnum(0,0)&Gnum(0,1))= Rnum(0,1)'Ie中間'&'會先評估 –

+0

@ GermannArlington:你是不是指「&」運算符?我不認爲在這裏使用「=」是沒有問題的;-) –

+0

@ Meta-Knight是的,我只注意到'&'在VB中不是一個邏輯運算符... –

回答

3

我不能肯定,如果「&」這裏的意圖「&」是串聯在vb.net

嘗試使用「和」,而不是將工作。

編輯:什麼vb.net認爲你在這裏試圖做的是連接所有這些變量,並檢查結果是否等於真(它不會是)。這就是爲什麼if語句中的代碼沒有被執行,也沒有顯示錯誤。

+0

WoW,這是問題所在。感謝DUDE –

2

想必您要做AND檢查。取而代之的&,請嘗試使用AndAlso

If (Gnum(0, 0) = Rnum(0, 0) AndAlso Gnum(0, 1) = Rnum(0, 1) AndAlso Gnum(0, 2) = Rnum(0, 2)) Then 
    Lbl_Msg.Text = "Send Msg" 
end if 

&是用來連接字符串在VB.NET。

+0

是的,我想要做的檢查,「和」和「andalso」之間的區別是什麼? –

+1

'和'評估雙方,而'AndAlso'只評估右手邊,如果左手邊是真的。因此,'AndAlso'應該更快(雖然實際表現可能不明顯,取決於你在做什麼)。如果你熟悉C#,'AndAlso'就等於'&&'。這裏更詳細的信息http://stackoverflow.com/questions/302047/what-is-the-difference-between-and-and-andalso-in-vb-net – keyboardP

+0

>>雖然現實生活中的表現可能不明顯取決於關於你在做什麼<< 如果右側比左側更「昂貴」,這是有區別的。像'如果x = 0並且ExpensiveFunction(y)<3',並且/或者如果左側很少評估爲'true' – igrimpe

0
If (Gnum(0, 0) = Rnum(0, 0) AND Gnum(0, 1) = Rnum(0, 1) AND Gnum(0, 2) = Rnum(0, 2)) Then 
    Lbl_Msg.Text = "Send Msg" 
Else 
    Lbl_Msg.Text = "see if this text is written to confirm if your if is true" 
End If 
+2

這不會給出比已經提供的兩個答案更多的東西 –

相關問題