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 の言語仕様は型の安全から離れていく力学が働くのでコードの質が落ちちゃうよねというつらさ。

関連


いいなと思ったら応援しよう!