我计算出一个压缩率,我注意到这行中有一个“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;
这不会导致另一个开发人员对此处计算的值感到困惑。
对我来说,隐式转换会导致代码可读性问题。特别是在更复杂的单行计算中(这实际上是另一个可读性问题)。
我还认为不同形式的投射值会产生不同的输出,具体取决于在等式中投射的位置。
答案 0 :(得分:1)
作为开发人员,我可以这么说
double ratio = (double)data.Length / comp.Length;
或
double ratio = data.Length / (double)comp.Length;
永远不会混淆我。我认识到这种"模式":
double
所以,据我所知,第二个操作数和结果是双倍的。我(作为开发人员)不需要第二个演员。