cast(T)x 和 to!T(x) 的区别

Difference between cast(T)x and to!T(x)

D语言中cast(T)xto!T(x)有什么区别? (前提是导入了模块std.conv

cast(T)x 进行了语言保证的几种类型的转换。其中包括:

  • class/接口类型之间的动态转换,由运行时提供
  • 数字类型转换,例如 double 到 short
  • 数组类型转换,例如 int[] 到 ubyte[]
  • 强制进行 alias this 否则不会被强制的转换
  • 仅类型系统转换,尤其是在 constshared
  • 附近

to!T(x) 进行许多其他转换,尤其是字符串之间的转换。