如何解决VB.NET-我很好奇,为什么“ Right”的返回不能用作字符串?
| 如果我有一个类似input = \“ AA [\”的字符串If Right(input,1) = \"[\" Then Do stuff
即使我尝试将事物转换为char等,If语句也会返回false。但是,如果执行此操作,则返回true:
Dim temp As String = Right(input,1)
If temp = \"[\" Then Do Stuff
我喜欢了解这样的少量语义,知道为什么会这样吗?
解决方法
在调试时,我已经看到过类似的怪异行为。
实际上,今天我有一些相似之处
Dim records As Integer
records = If(o.dr Is Nothing,o.ADO.rs.RecordCount,o.ADO.DS.Tables(\"tbl\").Rows.Count)
那应该工作,当dr为空时使用rs.RecordCount,否则使用Rows.Count。没有,记录最终为零。将其重写为完整的if / else块,即可正常工作。
我从来没有想到,编译器/调试器/ IDE会把事情弄糟,但是您应该把它放在脑海中以供考虑:编写这些程序的程序员和您我一样人情和容易犯错。
, 或根本不使用Right,因为这是.Net
Dim s As String = \"AAAAAAA]\"
If s.Substring(s.Length - 1,1) = \"]\" Then
Stop
End If
\'or
If s(s.Length - 1) = \"]\" Then
Stop
End If
, 不应该。您确定没有错字吗? RIGHT的结果是一个字符串,如果输入确实是\“ AA [\”,则IF将通过。
我从来没有像这样的事情让VB变态。
, 如果代码以表单形式出现,则表单的.Right属性将覆盖字符串操作函数。您需要指定父名称空间-例如VisualBasic.Right-确保您获得正确的方法。
, 我认为您可能在这里发生某种奇怪的过载混乱。
您正在指定\“ Right \”(可能正在调用本地\“ Right \”函数)。
由于全局导入,您暗示的函数为\“ Microsoft.VisualBasic.Strings.Right \”在我的大多数代码中最终为\“ Strings.Right \”。
我会尝试将您的代码更改为以下代码,看看它是否仍然发生,以排除某些过载/作用域混乱。 (和/或减少的\“ Strings.Right \”)
If Micosoft.VisualBasic.Strings.Right(input,1) = \"[\" Then Do stuff
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。