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

Test という単語が MessageBox に表示される理由は、メッセージ ボックスに文字列 "Test" が表示されているためです。

MsgBox ("Test")

これを使うべきです

MsgBox (Test)
于 2012-04-19T02:03:52.910 に答える