.NET の型変換の表Type Conversion Tables in .NET

拡大変換は、1 つの型の値が、サイズが同じかそれ以上の別の型に変換されるときに発生します。Widening conversion occurs when a value of one type is converted to another type that is of equal or greater size. 縮小変換は、1 つの型の値が、サイズがより小さい別の型の値に変換されるときに発生します。A narrowing conversion occurs when a value of one type is converted to a value of another type that is of a smaller size. このトピックの表は、両方の種類の変換の動作を示しています。The tables in this topic illustrate the behaviors exhibited by both types of conversions.

拡大変換Widening Conversions

次の表は、情報を失うことなく実行できる拡大変換を示しています。The following table describes the widening conversions that can be performed without the loss of information.

Type データ損失なしに次の型に変換可能Can be converted without data loss to
Byte UInt16, Int16, UInt32, Int32, UInt64, Int64, Single, Double, DecimalUInt16, Int16, UInt32, Int32, UInt64, Int64, Single, Double, Decimal
SByte Int16, Int32, Int64, Single, Double, DecimalInt16, Int32, Int64, Single, Double, Decimal
Int16 Int32, Int64, Single, Double, DecimalInt32, Int64, Single, Double, Decimal
UInt16 UInt32, Int32, UInt64, Int64, Single, Double, DecimalUInt32, Int32, UInt64, Int64, Single, Double, Decimal
Char UInt16, UInt32, Int32, UInt64, Int64, Single, Double, DecimalUInt16, UInt32, Int32, UInt64, Int64, Single, Double, Decimal
Int32 Int64DoubleDecimalInt64, Double, Decimal
UInt32 Int64, UInt64, Double, DecimalInt64, UInt64, Double, Decimal
Int64 Decimal
UInt64 Decimal
Single Double

一部の Single または Double への拡大変換では、精度が損なわれる可能性があります。Some widening conversions to Single or Double can cause a loss of precision. 次の表は、情報が失われる可能性のある拡大変換を示しています。The following table describes the widening conversions that sometimes result in a loss of information.

Type 次の型に変換可能Can be converted to
Int32 Single
UInt32 Single
Int64 SingleDoubleSingle, Double
UInt64 Single, DoubleSingle, Double
Decimal SingleDoubleSingle, Double

縮小変換Narrowing Conversions

Single または Double への縮小変換では、情報が失われる可能性があります。A narrowing conversion to Single or Double can cause a loss of information. ターゲット型がソースの大きさを正確に表現できない場合、結果の型は定数 PositiveInfinity または NegativeInfinity に設定されます。If the target type cannot properly express the magnitude of the source, the resulting type is set to the constant PositiveInfinity or NegativeInfinity. PositiveInfinity は、正の数を 0 で除算した結果であり、Single または Double の値が MaxValue フィールドの値を超える場合にも返されます。PositiveInfinity results from dividing a positive number by zero and is also returned when the value of a Single or Double exceeds the value of the MaxValue field. NegativeInfinity は、負の数を 0 で除算した結果であり、Single または Double の値が MinValue フィールドの値を下回る場合にも返されます。NegativeInfinity results from dividing a negative number by zero and is also returned when the value of a Single or Double falls below the value of the MinValue field. Double から Single への変換は、PositiveInfinity または NegativeInfinity になる場合があります。A conversion from a Double to a Single might result in PositiveInfinity or NegativeInfinity.

その他のデータ型についても、縮小変換によって情報が失われる可能性があります。A narrowing conversion can also result in a loss of information for other data types. ただし、変換される型の値が、ターゲット型の MaxValue フィールドと MinValue フィールドで指定された範囲外にある場合は、OverflowException がスローされます。また、ターゲット型の値がその MaxValue または MinValue を超えないことを確認するために、ランタイムによって変換がチェックされます。However, an OverflowException is thrown if the value of a type that is being converted falls outside of the range specified by the target type's MaxValue and MinValue fields, and the conversion is checked by the runtime to ensure that the value of the target type does not exceed its MaxValue or MinValue. System.Convert クラスを使用して実行される変換は、常にこの方法でチェックされます。Conversions that are performed with the System.Convert class are always checked in this manner.

次の表は、System.Convert を使用して OverflowException をスローする変換、または、変換される型の値が結果の型の定義済みの範囲外にあるかどうかのチェックを行うすべての変換を示しています。The following table lists conversions that throw an OverflowException using System.Convert or any checked conversion if the value of the type being converted is outside the defined range of the resulting type.

Type 次の型に変換可能Can be converted to
Byte SByte
SByte Byte, UInt16, UInt32, UInt64Byte, UInt16, UInt32, UInt64
Int16 ByteSByteUInt16Byte, SByte, UInt16
UInt16 ByteSByteInt16Byte, SByte, Int16
Int32 Byte, SByte, Int16, UInt16,UInt32Byte, SByte, Int16, UInt16,UInt32
UInt32 Byte, SByte, Int16, UInt16, Int32Byte, SByte, Int16, UInt16, Int32
Int64 Byte, SByte, Int16, UInt16, Int32,UInt32,UInt64Byte, SByte, Int16, UInt16, Int32,UInt32,UInt64
UInt64 Byte, SByte, Int16, UInt16, Int32, UInt32, Int64Byte, SByte, Int16, UInt16, Int32, UInt32, Int64
Decimal Byte, SByte, Int16, UInt16, Int32, UInt32, Int64, UInt64Byte, SByte, Int16, UInt16, Int32, UInt32, Int64, UInt64
Single Byte, SByte, Int16, UInt16, Int32, UInt32, Int64, UInt64Byte, SByte, Int16, UInt16, Int32, UInt32, Int64, UInt64
Double Byte, SByte, Int16, UInt16, Int32, UInt32, Int64, UInt64Byte, SByte, Int16, UInt16, Int32, UInt32, Int64, UInt64

関連項目See also