暗黙的な数値変換の一覧表 (C# リファレンス)Implicit numeric conversions table (C# Reference)

.NET 数値型間の定義済みの暗黙的な変換を次の表に示します。The following table shows the predefined implicit conversions between .NET numeric types.

変換元From 終了To
sbytesbyte shortintlongfloatdouble、または decimalshort, int, long, float, double, or decimal
bytebyte shortushortintuintlongulongfloatdouble、または decimalshort, ushort, int, uint, long, ulong, float, double, or decimal
charchar ushortintuintlongulongfloatdouble、または decimalushort, int, uint, long, ulong, float, double, or decimal
shortshort intlongfloatdouble、または decimalint, long, float, double, or decimal
ushortushort intuintlongulongfloatdouble、または decimalint, uint, long, ulong, float, double, or decimal
intint longfloatdouble、または decimallong, float, double, or decimal
uintuint longulongfloatdouble、または decimallong, ulong, float, double, or decimal
longlong floatdouble、または decimalfloat, double, or decimal
ulongulong floatdouble、または decimalfloat, double, or decimal
floatfloat double

解説Remarks

  • 整数型はすべて、あらゆる浮動小数点型に暗黙的に変換できます。Any integral type is implicitly convertible to any floating-point type.

  • intuintlong、または ulong から float への変換と long から ulong または double への変換では、有効桁数が失われる場合があります (絶対値ではありません)。Precision but not magnitude might be lost in the conversions from int, uint, long, or ulong to float and from long or ulong to double.

  • charbytesbyte 型への暗黙的な変換はありません。There are no implicit conversions to the char, byte, and sbyte types.

  • double および decimal 型からの暗黙的な変換はありません。There are no implicit conversions from the double and decimal types.

  • decimal 型と float 型または double 型の間に暗黙的な変換はありません。There are no implicit conversions between the decimal type and the float or double types.

  • int の定数式の値 (整数リテラルで表される値など) は、それが変換先の型の範囲内にある場合、sbytebyteshortushortuintulong に変換できます。A value of a constant expression of type int (for example, a value represented by an integral literal) can be converted to sbyte, byte, short, ushort, uint, or ulong, provided it's within the range of the destination type:

    byte a = 13;    // Compiles
    byte b = 300;   // CS0031: Constant value '300' cannot be converted to a 'byte'
    

明示的な変換に関する詳細については、C# 言語仕様に関するページの「Implicit conversions」 (明示的な変換) セクションをご覧ください。For more information about implicit conversions, see the Implicit conversions section of the C# language specification.

関連項目See also