ここではVB.NETでの基本型の変換について見ていきます。 VB.NETに固有な型変換関数であるCIntなどのCXxx系関数を中心に説明しますが、それ以外に.NET Frameworkでサポートされている型変換(ToStringParseなどのメソッド)については基本型の型変換で詳しく解説しています。

§1 数値→数値変換

数値から数値へ変換する場合、つまり数値の型を変える場合は従来通りCXxx関数を使用できます。

Dim b As Byte = 15
Dim i As Integer = 7
Dim l As Long = 2

b = CByte(i) ' Byte型への変換、b = 7となる
i = CInt(l) ' Integer型への変換、i = 2となる
l = CLng(b) ' Long型への変換、l = 7となる

Dim s As Single
Dim d As Double

s = CSng(l) ' Single型への変換、s = 7.0となる
d = CDbl(s) ' Double型への変換、d = 7.0となる

Dim bln As Boolean
bln = CBool(s) ' Boolean型への変換、0以外の数値はTrueと扱われるのでbln = Trueとなる

単純に浮動小数点値から整数値に変えるにはCInt関数などを使うことができますが、四捨五入や切り捨てなど丸めの方法を指定して整数値に変える必要がある場合はMath.Roundメソッドなどを使用する必要があります。 詳しくは数学関数 §.実数の丸め・端数処理 (Truncate, Ceiling, Floor, Round)での解説を参照してください。

数値を符号なし整数型へ変換するCUIntなどについては符号なし整数型 §.型の変換で解説しています。

§2 数値→文字列変換

数値から文字列へ変換する場合には、CStr関数を使用することができます。

Dim str As String

Dim i As Integer = 15

str = CStr(i) ' str = "15"
str = CStr(3.14) ' str = "3.14"

§2.1 ToStringメソッド

CStrに加え、VB.NETではToStringメソッドを使用することができます。 上のコードと等価なコードをToStringを用いて記述した例を示します。

Dim str As String

Dim i As Integer = 15

str = i.ToString() ' str = "15"
str = (3.14).ToString() ' str = "3.14"

この例のように、数値リテラルを括弧でくくることにより直接ToStringメソッドを使用することもできます。

これだけではCStr関数とToStringメソッドの違いはないように見えますが、ToStringメソッドには文字列化する際に書式を指定できるという利点があります。

Dim str As String

Dim i As Integer = 15

' 整数四桁で表記
str = i.ToString("D4") ' str = "0015"

' 小数点以下6桁で表記
str = (3.14).ToString("F6") ' str = "3.140000"

この例のように、ToStringメソッドの引数で書式指定文字列を指定することにより、文字列化に際して数値の表記方法を指定することができます。 書式指定文字列には次のようなものがあります。

書式指定文字の例
書式指定文字 適用される書式 使用できる型
D 値を十進数表記にする。 整数型 (Integer, Longなど)
X 値を十六進数表記にする。
E 値を指数表記にする。 実数型 (Single, Doubleなど)
F 値を固定小数点表記にする。
G 値を固定小数点または指数のいずれか簡潔な方の表記にする。
P パーセントとして表記する。
N 三桁ことに区切り文字(カンマ)をつけて表記する。 整数型および実数型

これらの書式指定文字に加え、桁数などを指定することで0埋め・右揃えなどを行うことも出来ます。 また、VBでサポートされていたFormat関数のような書式化を行うこともできます。

書式指定文字と書式の指定方法・変換結果については、書式指定子で詳しく解説しています。

§3 文字列→数値変換

文字列から数値へ変換する場合にもCXxx関数を使用することができます。

Dim i As Integer
Dim s As Single

i = CInt("15") ' i = 15
s = CSng("3.14") ' s = 3.14

§3.1 Parseメソッド

この方法のほかにもParseメソッドを使用することもできます。 Parseメソッドは目的の型名.Parse("数値を表す文字列")のように使用します。

Dim i As Integer
Dim s As Single

i = Integer.Parse("15")  ' i = 15
s = Single.Parse("3.14") ' s = 3.14

これらのいずれの方法を使用しても適切に変換されます。 また、次のような複雑な表記の数値も正しく変換されます。

Dim i As Integer
Dim s As Single

i = CInt("1,234,567") ' i = 1234567
s = CSng("3.14E+05") ' s = 314000

i = Integer.Parse("654,321", Globalization.NumberStyles.Number) ' i = 654321
s = Single.Parse("2.71828e-3", Globalization.NumberStyles.Float) ' s =0.00271828

Parseメソッドでは許容される表記を指定して変換することができます。 ここで指定した表記以外の表記の文字列が指定された場合は例外エラーが発生します。 表記方法の詳細についてはGlobalization.NumberStyles列挙型を参照してください。

このほか、Parseメソッドの使い方・エラー処理の例については基本型の型変換 §.文字列への/からの変換を参照してください。

§4 日付⇆文字列変換

日付型(DateTime)も数値の場合と同様にToString・Parseメソッドを使って変換することができます。 日付型と文字列の相互変換については日時・文字列の変換と書式で詳しく解説しています。