とりあえずDirectCastにしておこう

自分のようなロートルプログラマにとって、
BASICは、色々な意味で、愛着のある言語の一つである。
この言語は、ゲル・ゲイツのお気に入りとも、何かで読んだ気がするが、
特にマイクロソフトの処理系としては、
形を変えながら、今でも現役であるのは紛れもない事実である。
とは言え、これには、功罪両面あり、
その為に、色々と悩まされることもしばしばあったりする。

その一つが、キャスト。
元々、BASICがインタープリタの頃は、それほど、型に対して厳密ではなく、
せいぜい、文字列を数値に変換だとか、その程度でしかなかったように思う。
つまり、ValだとかStrだとか、その類である。
後に、コンパイラタイプやVisualBasicといった世代になってくると、
他の処理系と同様、コンパイラによる型チェックが厳密になり、
Optionの設定次第ではあるが、明示的な型指定をチェック出来るようになってくる。
そこでCIntやCStr及びCType等の型変換関数が導入されたと記憶している。
VB.NETでは、これらの型変換に加え、DirectCastが導入され、
同じような機能が複数あり、どれを使って良いのか分からなくなる。

基本的にBASICは、優しい処理系というイメージがある。
優しいと書くと語弊があるかもしれないが、とにかく努力はしてくれる。
対極はC処理系等だろうか?
ある意味、そっけないのである。
C処理系では、単純に変換出来なければエラー扱い。
対して、BASICは、可能な限り変換しようと努力する... みたいなイメージ。
ところが、これは、場合によっては、余計なお世話になる事もある。
特に文字列からの他の型への変換の際は、驚くべき結果を披露してくれる事も、ままある。
であれば、単純にエラーで落としてくれた方が良い時もある。
特に、これらが、実行時エラーでしか拾えない不具合である場合、
エラー検出を難しくしてしまう側面もあるからである。
まぁ、そんな事で悩むのであれば、もう素直にDirectCastを使うのが一番かな... と。
最近、同じ事を何度も調べたりだとか、検証した結果をすっこり忘れてたりだとか、
どうも自分の記憶力があてにならないのでメモしておく。