【问题标题】:conditions are met, but the code under if statement doesn't execute条件满足,但是if语句下的代码没有执行
【发布时间】: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 会提醒您这里有问题(即您的代码无法编译)

标签: vb.net vb.net-2010


【解决方案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 相当于 &&。更多信息在这里stackoverflow.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

【讨论】:

  • 这除了已经提供的两个答案之外没有给出任何其他答案
猜你喜欢
  • 1970-01-01
  • 2016-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-01
  • 2023-03-25
  • 1970-01-01
  • 2021-12-16
相关资源
最近更新 更多