意の中のカワズ(35歳の壁 別館)

35歳の壁の別館ブログです。コード中心になるようにしたいので、技術雑記はできるだけ本館に書きます。

VB6:内部処理の話

VBの悪しき変数といえば、バリアント 別名 何でも型。

とある本を読んでいて唐突に思いました。
変数の暗黙変換における内部処理は、右辺型に従うというもの。

右辺の意味がわからない人は、海水浴でもしとけ!ってことで、(うん、アレ系好き笑)
さて、右辺型がVariantだったらどするのか?

とりあえず、
dim a as variant
if "" = a then
 debug.print true
else
 debug.print false
end if

あたりを試してみる。
死にはしないようです。

内部処理的にどうなってるんでしょう?
これが逆ならわかります。
if a = "" then

ならば右辺はStringです。
なので、未初期化のaは、space(0)となるはず。
よって、if space(0) = "" then と解釈しているはずです。

この逆は??
うむむむ。。。

ば、バリアント撃てーっ!(意味フw


追記:2011.08.08

 いやいや、まてまて。
右辺の型に従うとなると暗黙の変換の意味がなくなる気がします。

例えば、
Dim strData As String

strData = cint(2)

であったとして、エラーになることになる。
それはおかしい。

ちょっと、読み返してみます。
オペランド的に右であるかどうかという右辺じゃないのかも・・。