这样做有什么区别:
Dim strTest As String
If strTest > " " Then
End If这是:
Dim strTest As String
If strTest <> "" Then
End If我认为代码示例1是比较ASCII值(空格的ASCII代码是32)。我已经查看了MSDN上的String部分,但是我找不到答案。
更新
我也对这里发生的事情感到困惑:
Dim strTest As String = "Test"
If strTest > " " Then
End If发布于 2012-08-18 19:06:52
> (大于)运算符将按字母顺序或字符代码值顺序进行测试(取决于Option Compare设置),而<> (不相等)运算符则测试是否相等。只要这两个字符串是完全不同的,那么<>将始终计算为True。只要操作符右侧的字符串按字母顺序或字符代码值在第一个字符串之后出现,>就会计算为true。因此:
Option Compare Text ' Compare strings alphabetically
...
Dim x As String = "Hello"
Dim y As String = "World"
If x <> y Then
' This block is executed because the strings are different
Else
' This block is skipped
End If
If x > y Then
' This block is skipped
Else
' This block is executed because "Hello" is less than "World" alphabetically
End If但是,在您的问题中,您将空字符串与空字符串进行比较(设置为Nothing)。在这种情况下,比较运算符将空变量视为空字符串。因此,Nothing <> ""应该计算为False,因为操作符的两边都被认为是空字符串。空字符串或空字符串应始终被视为排序顺序的第一位,因此Nothing > "Hello"应该计算为False,因为空字符串优先于其他所有内容。但是,Nothing > ""应该计算为False,因为它们都是相等的,因此它们既不是在另一个之前也不是在后面。
为了回答你的最后一个问题,"Test" > " "将测试字母T是在空格之前还是后面。如果Option Compare设置为Text,它将按字母顺序对它们进行比较,并且应该返回True (这最终取决于您的地区的字母排序)。如果Option Compare设置为Binary,它将根据它们的字符代码值对它们进行比较。如果它们是ASCII字符串,空格字符的值比字母(如T )低,所以它也应该返回True。
https://stackoverflow.com/questions/12021261
复制相似问题