C# 数据类型转换

隐式转换

  1. 整数:隐式转换支持从 低精度 转到 高精度,从 无符号 转到 有符号。
  2. 枚举:只有 0 可以隐式转为枚举类型。
  3. 引用:从派生类转为父类、从接口的实现转为接口。null 转为任何引用类型。
  4. 数组:维数相同,都是数组引用类型,数组元素满足隐式转换。转为 System.Array。
  5. 代表:任何代表类型转为 System.Delegate。

注:没有其它类型到 char 的隐式转换。

sbyte short, int, long, float, double, decimal
byte short, ushoft, int, uint, long, ulong, float, double, decimal
short int, long, float, double, decimal
ushort int, uint, long, ulong, float, double, decimal
int long, float, double, decimal
uing long, ulong, float, double, decimal
long float, double, decimal
ulong float, double, decimal
char ushort, int, uint, long, ulong, float, double, decimal
float double

显式(强制)转换

数值

  1. 整数互相转换如果发生溢出,将根据 checked 选项抛出 OverflowException 异常。
  2. 浮点数转为整数,同 1。
  3. double 转到 float ,可能的值有 正常值,正0,负0,正无穷,负无穷,NaN。
  4. float、double 转到 decimal,可以的值有 正常值,0,无穷,NaN。
  5. decimal 转到 float、double,可能丢失精度,不会引起异常。

枚举

  1. 枚举与 sbyte、byte、short、ushort、int、uint、long、ulong、char、float、double、decimal 可以互换。
  2. 枚举互转。

引用

  1. object 转为 任何引用。
  2. 数组维数相同,元素可显式转换。