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

Can this code look cleaner in C#?

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

在 C# 中是否有更多 elegant/readable 方法来执行此缩放操作:

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

其中 "original" 是 .Net 图像 class,因此 Image.Width 和 Image.Height 是整数。

正则除法后跟 floor 运算(强制转换为 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

如果你想更改代码(看起来没问题):因为 "w/h" 是 aspect ratio 单独计算它 可能 产生更多的自文档代码:

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