如果有的话,两者之间有什么区别?
decimal d = (decimal) myDouble;
decimal d = new decimal(myDouble);
decimal d = Convert.ToDecimal(myDouble);
没有区别。如果您查看源代码:
十进制:
public static explicit operator decimal(double value)
{
return new decimal(value);
}
在转换中:
public static decimal ToDecimal(float value)
{
return (decimal) value;
}
所以最后他们都打电话了new decimal(double)
。
他们都达到了相同的结果。但是,这里有一个更细分的解释:
方法 1创建一个显式转换myDouble
为 type的新变量decimal
。当你进行转换时,你是在说,“这个 A 类型的对象实际上是 B-派生自 A 类型的对象,或者存在一个转换运算符来将 A 转换为 B。”
方法 2创建一个新变量,该变量将通过构造函数重载转换myDouble
为适当的类型 ( )。decimal
当您调用构造函数时,您是在说“根据传递给构造函数的参数创建一个新对象”。
方法 3将基本数据类型 ( double
) 转换为另一种基本数据类型 ( decimal
)。当你使用类似的东西时Convert.ToDecimal()
,你是在说,“这个对象不是 B 类型的,但是有一种方法可以使它成为 B 类型的对象。”
关于Convert
MSDN 状态:
存在一种将每种基本类型转换为其他所有基本类型的转换方法。但是,实际执行的转换操作分为三类:
从类型到自身的转换只返回该类型。实际上不执行任何转换。
实际上,从功能的角度来看,没有任何区别。这些是实现相同结果的不同方法。
重要的是,在Convert.ToDecimal的情况下,您可以指定格式 IFormatProvider(culture),因此您可以获得更大的灵活性。
如果您不关心多元文化环境,请选择您喜欢的任何一个。