我在另一篇文章中注意到有人做了类似的事情:
double d = 3.1415; int i = Convert.ToInt32(Math.Floor(d));
他们为什么使用转换函数,而不是:
double d = 3.1415; int i = (int)d;
它有一个隐含的底层和转换.
另外,更关注的是,我在一些生产代码中注意到我正在阅读:
double d = 3.1415; float f = Convert.ToSingle(d);
这是一样的:
float f = (float)d;
是否所有这些隐式转换只是在Convert类中是为了完整性,还是它们是否有用?我可以理解需要.ToString(),但不是其他的.
转换为int是隐式截断,而不是隐式地板:
double d = -3.14; int i = (int)d; // i == -3
我选择Math.Floor或Math.Round来使我的意图更明确.