次の表は、標準の拡大変換を示しています。
データ型
|
拡大変換後のデータ型 1
|
|---|
SByte
|
SByte, Short, Integer, Long, Decimal, Single, Double
|
バイト
|
Byte, Short, UShort, Integer, UInteger, Long, ULong, Decimal, Single, Double
|
短整数型 (Short)
|
Short, Integer, Long, Decimal, Single, Double
|
ushort
|
UShort, Integer, UInteger, Long, ULong, Decimal, Single, Double
|
整数
|
Integer, Long, Decimal, Single, Double2
|
UInteger
|
UInteger, Long, ULong, Decimal, Single, Double 2
|
長整数型 (Long)
|
Long, Decimal, Single, Double 2
|
ulong
|
ULong, Decimal, Single, Double 2
|
10 進数
|
Decimal, Single, Double 2
|
単精度浮動小数点数型
|
Single, Double
|
倍精度浮動小数点数型
|
Double
|
すべての列挙型 (Enum)
|
基になる整数型および拡大変換の基になる任意の型
|
文字型 (Char)
|
Char, String
|
Char 配列
|
Char 配列、String
|
任意の型
|
オブジェクト
|
すべての派生型
|
3 を派生するすべての基本型
|
任意の型
|
実装するすべてのインターフェイス
|
なし
|
すべてのデータ型またはオブジェクト型
|
1 定義上、すべてのデータ型は自動的に拡大されます。
2 Integer、UInteger、Long、ULong、または Decimal から Single または Double への変換は、精度が失われる結果となる可能性がありますが、桁数が失われることはありません。この意味で考えると、情報の損失は起こりません。
3 派生型からその基本型への変換は拡大変換になります。派生型には基本型のすべてのメンバが含まれるため、基本型のインスタンスとして扱うことができるためです。逆に、基本型では派生型で定義されたメンバが含まれていません。
拡大変換は、実行時には常に正常に行われ、データ消失が発生することはありません。Option Strict ステートメントで型チェック スイッチを On または Off に設定して、拡大変換を常に暗黙的に実行できます。