我来自面向对象的背景。为什么在此代码片段中(在消息框中)显示“测试”(注意引号)。我希望逻辑测试:'If Test = "True"' 返回 False,因为变量包含布尔值而不是字符串。因此,我不希望出现消息框,但确实如此:
Dim Test As Variant
Test = True
If Test = "True" Then //line 5
MsgBox ("Test")
End If
我来自面向对象的背景。为什么在此代码片段中(在消息框中)显示“测试”(注意引号)。我希望逻辑测试:'If Test = "True"' 返回 False,因为变量包含布尔值而不是字符串。因此,我不希望出现消息框,但确实如此:
Dim Test As Variant
Test = True
If Test = "True" Then //line 5
MsgBox ("Test")
End If
Variant
VB6(以及支持它们的大多数其他语言)中的类型值会根据需要在数据类型之间自动转换;它们广泛用于 COM 交互。
您正在使用的代码在这里使用从布尔到字符串的自动(隐式)转换:
if Test = "True"
在这里使用它作为它的原始分配类型(布尔值)之后
Test = True
但是,在这里,您根本没有使用该变体;您使用的是硬编码字符串"Test"
。
他们之所以在 MessageBox 中出现 Test 一词是因为您在消息框中显示了字符串“Test”
MsgBox ("Test")
你应该使用这个
MsgBox (Test)