型変換の表
更新 : 2007 年 11 月
拡大変換は、ある型の値をそれよりサイズが大きいかまたは等しい別の型に変換するときに実行されます。縮小変換は、ある型の値をそれよりサイズが小さい別の型の値に変換するときに実行されます。このトピックの表では、この 2 種類の変換の動作を示します。
拡大変換
情報を失わずに実行できる拡大変換について次の表にまとめます。
型 |
データを失わない変換後の型 |
---|---|
Byte |
UInt16、Int16、UInt32、Int32、UInt64、Int64、Single、Double、Decimal |
SByte |
Int16、Int32、Int64、Single、Double、Decimal |
Int16 |
Int32、Int64、Single、Double、Decimal |
UInt16 |
UInt32、Int32、UInt64、Int64、Single、Double、Decimal |
Char |
UInt16、UInt32、Int32、UInt64、Int64、Single、Double、Decimal |
Int32 |
Int64、Double、Decimal |
UInt32 |
Int64、Double、Decimal |
Int64 |
Decimal |
UInt64 |
Decimal |
Single |
Double |
Single または Double への拡大変換では、精度が失われることがあります。情報が失われる可能性のある拡大変換について次の表にまとめます。
型 |
変換後の型 |
---|---|
Int32 |
Single |
UInt32 |
Single |
Int64 |
Single、Double |
UInt64 |
Single、Double |
Decimal |
Single、Double |
縮小変換
Single または Double への縮小変換では、情報が失われることがあります。変換先の型が変換元の絶対値を正確に表現できない場合、結果の型は定数 PositiveInfinity または NegativeInfinity に設定されます。PositiveInfinity の値は、正の数を 0 で除算した結果であり、Single または Double の値が MaxValue フィールドの値を上回った場合に返されます。NegativeInfinity の値は、負の数を 0 で除算した結果であり、Single または Double の値が MinValue フィールドの値を下回った場合に返されます。Double から Single に変換すると、結果が PositiveInfinity または NegativeInfinity になります。
ほかのデータ型の縮小変換でも、情報が失われることがあります。ただし、変換結果の型の値が、変換先の型の MaxValue フィールドおよび MinValue フィールドで指定されている範囲外になる場合に、変換先の型の値が MaxValue または MinValue を超えないことを保証するためにランタイムがその変換を確認する場合は、OverflowException がスローされます。System.Convert クラスを使用して実行される変換は、必ずこの方法でチェックされます。System.Convert を使用しない変換で、このようなチェックを行う方法については、明示的な変換に関するトピックを参照してください。
System.Convert を使用した変換や、チェックを伴うその他の変換で、変換結果の型の値が変換先の型で定義されている範囲外の値になる場合に OverflowException がスローされるケースを次の表にまとめます。
型 |
変換後の型 |
---|---|
Byte |
SByte |
SByte |
Byte、UInt16、UInt32、UInt64 |
Int16 |
Byte、SByte、UInt16 |
UInt16 |
Byte、SByte、Int16 |
Int32 |
Byte、SByte、Int16、UInt16、UInt32 |
UInt32 |
Byte、SByte、Int16、UInt16、Int32 |
Int64 |
Byte、SByte、Int16、UInt16、Int32、UInt32、UInt64 |
UInt64 |
Byte、SByte、Int16、UInt16、Int32、UInt32、Int64 |
Decimal |
Byte、SByte、Int16、UInt16、Int32、UInt32、Int64、UInt64 |
Single |
Byte、SByte、Int16、UInt16、Int32、UInt32、Int64、UInt64 |
Double |
Byte、SByte、Int16、UInt16、Int32、UInt32、Int64、UInt64 |