当字符串什么都没有时使用instr

时间:2009-07-29 18:16:49

标签: .net vb.net string

我有以下条件

如果是InStr(“a,b,c”,stringA)> 0 OrElse(InStr(“y,z”,stringB)> 0 AndAlso value = 0)然后 ENDIF

COndition 1是假的,所以我检查条件2是“(InStr(”y,z“,stringB)> 0 AndAlso value = 0)”

让我感到困惑的是,当stringB什么都不是时,它仍然属于if条件并执行代码。

首先看来,当stringB没有条件时,2会失败,结果不会落入if条件。

为什么会发生这种情况的任何解释?

谢谢

1 个答案:

答案 0 :(得分:2)

InStr()函数有一个可选的重载,它以开始检查的位置(“开始位置”)开始。如果排除它(如在你的例子中),那么它开始搜索字符串的开头,正如你所料。

当Nothing传递给stringB的函数时,返回“start position”。所以,人们会认为返回“0”,但实际上你可能会得到“1”。这是因为InStr函数将字符串视为基于1的字符数组,而不是基于0的字符数组。所以返回的“起始位置”是1,而不是0;并且我们都知道1是> 0 :)(Source on MSDN