VBA/VB.NET String中心の言語仕様
型にルーズな言語仕様
VB/VB6/VBA さらには VB.NET も初心者向けなんてよく言われたりするわけですが、VBには型を意識しない・型にルーズでもなんとかなるような言語仕様があります。
この型にルーズと言うのは Option Strict Off で起きるような暗黙の型変換が元凶だと思っていたのですが、昨日ふと別の事にも気づいたのでメモ。
String 型と型変換
タイトルに書いちゃってますが、VB は String 型中心の言語仕様なんだなーということ。そして、あらゆるルーズな型変換はこのString型を中心として回っているんだということ。
まず、基本的な型からString型への型変換が容易です。そして、String型から基本的な型への変換も容易です。
そのため、基本的な型から別の基本的な型への変換が、Stringを経由することでいとも簡単に行われてしまうのです。
AからStringにできる。StringからBにできる。となれば、Aから(Stringを経由して)Bにできる。
まあ、「できる」とは書いてますが、当然、コンパイラが守ってくれない変換失敗のリスクはあります。
どの言語でも Stringなんてものは使わなければ使わないほど、型の安全性の面からいいのですが、VB の言語仕様は型の安全から離れていく力学が働くのでコードの質が落ちちゃうよねというつらさ。
関連