C# visualstudio中的冗余强制转换
我正在计算压缩比,我注意到在这行中有一个“冗余转换”:C# visualstudio中的冗余强制转换,c#,visual-studio,casting,C#,Visual Studio,Casting,我正在计算压缩比,我注意到在这行中有一个“冗余转换”: double ratio = (double)data.Length / (double)comp.Length; 显然,在不强制转换的情况下将两个数组长度除以两倍将只返回数字的整数部分 但为什么这是多余的 在一个长度上只进行一次投射可以消除警告 据我所知,如果我们有: double ratio = (double)data.Length / comp.Length; 或 这不会导致另一个开发人员对这里计算的值感到困惑 在我看来,隐式转
double ratio = (double)data.Length / (double)comp.Length;
显然,在不强制转换的情况下将两个数组长度除以两倍将只返回数字的整数部分
但为什么这是多余的
在一个长度上只进行一次投射可以消除警告
据我所知,如果我们有:
double ratio = (double)data.Length / comp.Length;
或
这不会导致另一个开发人员对这里计算的值感到困惑
在我看来,隐式转换可能会导致代码可读性问题。特别是在更复杂的单行计算中(这实际上是另一个可读性问题)
我还认为将值转换为不同的形式会产生不同的输出,这取决于表达式中的转换位置。作为开发人员,我可以这么说
double ratio = (double)data.Length / comp.Length;
或
永远不会让我困惑。我重新认识了这个“模式”:
我知道,第二个操作数和结果是双精度的。作为开发人员,我不需要第二个cast操作符。这是多余的,也就是说,添加或删除该cast对结果没有影响。在这种情况下,冗余与可读性无关。此外,它是多余的并不意味着它是必要的坏事。我投票将这个问题作为离题题来结束,因为这是一个“我没有手册”的问题,我想在这种情况下-这是开发人员在编码方面的主观经验,也是您使用的语言。@Gelion我认为,一些主观经验成为了现场标准,比如命名约定等等
double ratio = (double)data.Length / comp.Length;
double ratio = data.Length / (double)comp.Length;