没有区别.如果你看一下来源:
在十进制:
public static explicit operator decimal(double value)
{
return new decimal(value);
}
Run Code Online (Sandbox Code Playgroud)
在转换中:
public static decimal ToDecimal(float value)
{
return (decimal) value;
}
Run Code Online (Sandbox Code Playgroud)
所以最后他们都打来电话new decimal(double).
他们都取得了相同的结果。然而,这里有一个更详细的解释:
方法 1创建一个显式转换myDouble为 type 的新变量decimal。当你进行强制转换时,你是在说:“这个 A 类型的对象实际上是 A 派生的 B 类型的对象,或者存在将 A 强制转换为 B 的强制转换运算符。”
方法 2创建一个新变量,该变量将通过构造函数重载转换myDouble为适当的类型 ( decimal)。当您调用构造函数时,您是在说:“根据传递到构造函数中的参数创建一个新对象。”
方法 3将一种基本数据类型 ( double) 转换为另一种基本数据类型 ( decimal)。当您使用诸如 之类的东西时Convert.ToDecimal(),您是在说:“这个对象不是 B 类型,但有一种方法可以使其成为 B 类型的对象。”
关于ConvertMSDN 声明:
存在一种转换方法,可以将每个基本类型转换为每个其他基本类型。然而,实际执行的转换操作分为三类:
从类型到自身的转换只是返回该类型。实际上没有执行任何转换。