重复实例化一个新矩形是否比更改它的所有字段慢

本文关键字:字段 是否 实例化 新矩形 一个 | 更新日期: 2023-09-27 18:04:54

目前我有这个代码:

selectorRect.X = (e.X + hscTileset.Value) / tileLayer.TileSize * tileLayer.TileSize;
selectorRect.Y = (e.Y + vscTileset.Value) / tileLayer.TileSize * tileLayer.TileSize;
selectorRect.Width = 32;
selectorRect.Height = 32;

我只是改变了矩形的所有字段。如果我做了这样的事呢?

selectorRect = new Rectangle((e.X + hscTileset.Value) / tileLayer.TileSize * tileLayer.TileSize, (e.Y + vscTileset.Value) / tileLayer.TileSize * tileLayer.TileSize, 32, 32)

我知道第二行很长,可读性差,通常不推荐使用,但我仍然对速度差异或其对堆栈或堆的影响感到好奇。由于这段代码是在控件的MouseMove事件处理程序中,它经常被调用,我想知道实例化一个新对象是否经常会导致相当大的速度差异。

谢谢!

重复实例化一个新矩形是否比更改它的所有字段慢

如果我不得不猜测,那么因为这是一个struct,我希望它们大约相同。出于语义的原因,我更喜欢第二种("new…")-加上第一种不适用于属性(仅适用于字段/变量/数组查找)。

要获得精确的度量:在您的上下文中配置它。我真的怀疑这个决定会产生明显的不同。