数値から文字列に変換する処理は、自動的に行われることも少なくはないが、ただ、自動ではうまくいかないときもある。その一つの例は
Dim i As Integer = 1
MsgBox("iは" + i )
「iは1」というダイアログを出してくれそうに思えるが実際はエラーメッセージが出て停止してしまう。
文字列「iは」をDouble型に変換しようとして、InvalidCastExceptionが生じてしまう。
解決策は
MsgBox("iは" + i.ToString())
とすることである。数値を文字列に変換する方法はいくつかあるが、ここではInt32構造体のToStringメソッドを使って、iが格納する数値を文字列型な変換している。現在のVisualBasicとC#では、基本的なデータ型であっても、色々なメソッドを呼び出せるようになっている。文字列に変換するToStringメソッドは、多くの構造体クラスが持っている。Visual Basicの場合、+演算子を変更してエラーを回避することもできる。
MsgBox("iは" & i )
とすればよい。+演算子は加算と文字列連結の両方に用いられるので、文字列連結をはっきり示すには&演算子を使うほうがいい。
数値を文字列に変換するとは逆に、文字列を数値に変換する時に使えるのがParseメソッド
Dim s As String = "123"
Dim t As String = "456"
MsgBox( s + t )
MsgBox(Integer.Parse(s) + Integer.Parse(t))
最初のメッセージでは「123」「456」を連結して「123456」と出力するが、
次のメッセージでは123を数値にしたものと456を数値にしたものを足し合わせ「579」を出力する。
Int32のParseメソッドは4種類のオーバーロードを持っているので、他にも多くの構造体やクラスが文字列からデータを受け取るParseメソッドを備えている。
0 件のコメント:
コメントを投稿