这个代码在C#中看起来更干净吗?

时间:2015-04-30 00:59:40

标签: c# casting coding-style

我有一个C编程背景,我习惯于做丑陋的事情。

在C#中执行此扩展操作是否有更优雅/可读的方式:

ImageProcessing.Resize(original, 80, (int)((float)original.Height * (80f / original.Width)));

其中"原创"是.Net Image类,Image.Width和Image.Height因此是整数。

2 个答案:

答案 0 :(得分:3)

常规除法后跟底层操作(强制转换为int)相当于整数除法。乘法和除法是左关联的。因此,您可以使用这么短的代码:

ImageProcessing.Resize(original, 80, 80 * original.Height / original.Width);

为了说服你,假设WidthHeight分别是300200。然后你的代码将执行此操作:

(int)(200f * (80f / 300f)) = (int)(200f * 0.2666...) = (int)(53.3333...) = 53

我的代码将执行此操作(其中/表示整数除法):

80 * 200 / 300 = 16000 / 300 = 53

答案 1 :(得分:0)

如果你想改变代码(看起来没问题):因为" w / h"是aspect ratio分别计算它可能生成更多自我记录的代码:

var aspectRatio = original.Width / (float)original.Height;
int newWidth = 80;
ImageProcessing.Resize(original, newWidth, (int)(newWidth / aspectRatio));