重复实例化一个新矩形是否比更改它的所有字段慢
本文关键字:字段 是否 实例化 新矩形 一个 | 更新日期: 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…")-加上第一种不适用于属性(仅适用于字段/变量/数组查找)。