Visual Studio中的冗余转换

时间:2017-10-20 10:40:08

标签: c# visual-studio casting

我计算出一个压缩率,我注意到这行中有一个“Redundant Cast”:

double ratio = (double)data.Length / (double)comp.Length;

显然,将两个数组长度除以不转换为double将仅返回数字的整数分量。

但为什么这个演员多余?

在一个长度上只有一个强制转换会删除警告。

我的理解是否有:

double ratio = (double)data.Length / comp.Length;

double ratio = data.Length / (double)comp.Length;

这不会导致另一个开发人员对此处计算的值感到困惑。

对我来说,隐式转换会导致代码可读性问题。特别是在更复杂的单行计算中(这实际上是另一个可读性问题)。

我还认为不同形式的投射值会产生不同的输出,具体取决于在等式中投射的位置。

1 个答案:

答案 0 :(得分:1)

作为开发人员,我可以这么说

double ratio = (double)data.Length / comp.Length;

double ratio = data.Length / (double)comp.Length;

永远不会混淆我。我认识到这种"模式":

  1. 分部运作
  2. 一个操作数已转换为double
  3. 所以,据我所知,第二个操作数和结果是双倍的。我(作为开发人员)不需要第二个演员。