入力系で、TextBox に入力された値を数値として扱いたい場合に、入力チェックロジックにて数値かどうかを判定する必要があります。
VB6以前では IsNumeric 関数というものがありましたが、これがなかなか癖のある仕様でした。
たとえば
IsNumeric("1e9")
と書くと True が返るのです。
これは e を指数表記ととらえ、1×10の9乗と解釈するからだそうです。
この IsNumeric 関数もVB.Netに移植されていました。
でもやはり指数表記は True と判断するようです。
さらにこの IsNumeric 関数はおせっかいなVBらしく、\(円記号),16進数表記といったところまでも True としてしまいます。
単純に数値なのかどうかにははやり使えそうにありません。
ということで、.Net Framework標準での数値判定に使えそうなメソッドを探してみました。
見つけたのは
TryParse
というメソッドです。
これは 型クラスの静的メソッドして用意されており、
型.TryParse(評価する文字列,変換後の値)
という形で使えます。
戻り値には変換できたか、できなかったかが Boolean で帰ります。
変換にも使えるし、変換できるかの判定にも使えるみたいです。
動きとしては引数で渡した文字列が、その型に変換できるかどうかを判断してるようです。
IsNumeric 関数のようにおせっかいなこともしません。
型も Integer,Doubleをはじめ、かなり用意されていました。
ということで、これは入力チェックロジックでは有用だとおもいます。
参考:
【VB.NET】指定した文字が数字かどうか判定する(IsDigit, IsNumber, IsNumeric)
VisualBasic6.0 SP5 のおもしろバグ発見!? 数値の指数はどうやらFormat関数でも来てしまうみたいです。厄介ですね。