条件满足,但是if语句下的代码没有执行

Posted

技术标签:

【中文标题】条件满足,但是if语句下的代码没有执行【英文标题】:conditions are met, but the code under if statement doesn't execute 【发布时间】:2012-11-30 06:27:33 【问题描述】:

我正在尝试检查 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

【问题讨论】:

我不是 VB 专家,只是一个一般说明:检查运算符的用法 =& 及其优先级。据我所知:Gnum(0, 0) = Rnum(0, 0) & Gnum(0, 1) = Rnum(0, 1) 被评估为Gnum(0, 0) = ( Rnum(0, 0) & Gnum(0, 1) ) = Rnum(0, 1) 即中间的 & 首先得到评估 @GermannArlington:你不是说“&”运算符吗?我不认为在这里使用“=”有问题;-) @Meta-Knight 是的,我只是注意到& 在 VB 中根本不是逻辑运算符... 注意:切换 Option Strict On 会提醒您这里有问题(即您的代码无法编译) 【参考方案1】:

我不确定 '&' 是否会按预期工作,因为 '&' 用于 vb.net 中的连接

尝试改用“和”。

编辑:vb.net 认为您在这里尝试做的是连接所有这些变量并检查该结果是否等于 true(它不会是)。这就是为什么 if 语句中的代码没有被执行但也没有显示错误的原因。

【讨论】:

哇,这就是问题所在。谢谢老兄【参考方案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 中的字符串。

【讨论】:

是的,我想做 AND 检查,“and”和“andalso”之间的区别是什么? And 评估两边,而AndAlso 仅在左侧为真时评估右侧。因此,AndAlso 应该更快(尽管实际性能可能并不明显,具体取决于您在做什么)。如果您熟悉 C#,AndAlso 相当于 &amp;&amp;。更多信息在这里***.com/questions/302047/… >> 尽管现实生活中的性能可能并不明显,具体取决于您在做什么If x=0 AndAlso ExpensiveFunction(y) < 3,和/或如果左侧很少评估为true【参考方案3】:
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

【讨论】:

这除了已经提供的两个答案之外没有给出任何其他答案

以上是关于条件满足,但是if语句下的代码没有执行的主要内容,如果未能解决你的问题,请参考以下文章

条件语句和循环语句

05_python的if语句

java基础条件语句

判断语句和循环语句

java编程基础流程控制语句

Python基础语法—— 条件语句(if)+循环语句(for+while)