3

我来自面向对象的背景。为什么在此代码片段中(在消息框中)显示“测试”(注意引号)。我希望逻辑测试:'If Test = "True"' 返回 False,因为变量包含布尔值而不是字符串。因此,我不希望出现消息框,但确实如此:

Dim Test As Variant

Test = True

If Test = "True" Then //line 5
    MsgBox ("Test")
End If
4

2 回答 2

10

VariantVB6(以及支持它们的大多数其他语言)中的类型值会根据需要在数据类型之间自动转换;它们广泛用于 COM 交互。

您正在使用的代码在这里使用从布尔到字符串的自动(隐式)转换:

if Test = "True"

在这里使用它作为它的原始分配类型(布尔值)之后

Test = True

但是,在这里,您根本没有使用该变体;您使用的是硬编码字符串"Test"

于 2012-04-18T22:28:41.987 回答
1

他们之所以在 MessageBox 中出现 Test 一词是因为您在消息框中显示了字符串“Test”

MsgBox ("Test")

你应该使用这个

MsgBox (Test)
于 2012-04-19T02:03:52.910 回答