通过强制转换或Convert.ToSingle()将double转换为float?

Seb*_*Seb 38 .net c# casting type-conversion

在C#中我可以通过强制转换(float)或者转换为双精度浮动Convert.ToSingle().

double x = 3.141592653589793238463;
float a = (float)x;
float b = Convert.ToSingle(x);
Run Code Online (Sandbox Code Playgroud)

ab变得平等.

这两种技术之间有什么不同吗?我应该选择哪一个?为什么?

Glo*_*oot 62

.NET参考源:

public static float ToSingle(double value)
{
     return (float)value;
}
Run Code Online (Sandbox Code Playgroud)

所以,你的答案是它们完全相同,在引擎盖下.

两者之间的任何偏好都是个人风格的选择.就个人而言,我总是会使用演员,因为它更短,而且对我来说似乎更惯用.

  • `Convert`类是在.NET Framework的不同基类型之间进行转换的语言中立方式.并非所有在.NET上运行的语言都有像C#这样的强制转换运算符.例如:在VB.NET中,你有CType(),CDbl(),DirectCast()和隐式转换,它们都没有与C#中的强制转换操作符完全相同的语义. (6认同)
  • 由于似乎根本没有任何理由使用ToSingle,因此这不是个人选择,但客观上来说,使用演员表会更好。 (2认同)