VB.NET中判断字符串不相等的运算符及Do Until代码写法咨询
VB.NET中字符串不相等判断及循环代码修正
刚好熟悉VB.NET的语法,来帮你梳理下问题:
首先,关于字符串不相等的判断:
- VB.NET里没有C#那种
!=运算符,正确的不等于运算符是<>,比如判断test不等于"1234"可以写test <> "1234"。 - 如果你想用
Equals方法来判断不相等,需要用Not关键字(而不是你写的!,!是C#的逻辑非符号),也就是Not test.Equals("1234")。
然后看你的循环代码,这里有两个关键问题:
- 语法错误:VB.NET中逻辑非用
Not,不是!; - 逻辑错误:原代码的
Do Until !test.equals("1234") Or !test.equals("xyxyxyx")逻辑有问题——因为一个字符串不可能同时等于"1234"和"xyxyxyx",所以这个条件永远为True,循环会无限执行下去。
假设你的需求是循环直到test等于"1234"或者等于"xyxyxyx"(也就是满足任一条件就停止循环),正确的代码写法有两种:
方法1:使用Equals方法 + 短路逻辑运算符
Do Until test.Equals("1234") OrElse test.Equals("xyxyxyx") ' 这里写你的循环体代码,比如获取新的test值 Loop
这里用OrElse而不是Or是因为它是短路求值——只要第一个条件满足,就不会再判断第二个,能提升一点效率。
方法2:使用<>/=运算符
Do Until test = "1234" Or test = "xyxyxyx" ' 循环体代码 Loop
这种写法更简洁,也是VB.NET里比较常用的方式。
如果你的需求是循环直到test既不等于"1234"也不等于"xyxyxyx"(两个条件都不满足时停止),那正确的条件应该是:
Do Until test <> "1234" AndAlso test <> "xyxyxyx" ' 循环体代码 Loop
或者用Not结合Equals:
Do Until Not test.Equals("1234") AndAlso Not test.Equals("xyxyxyx") ' 循环体代码 Loop
最后再提醒下:VB.NET对大小写不敏感,但Equals方法默认是区分大小写的,如果需要不区分大小写的判断,可以用test.Equals("1234", StringComparison.OrdinalIgnoreCase)这种写法哦。
内容的提问来源于stack exchange,提问作者dieMstar
相关产品推荐
相关产品推荐

