实例化一个新的Rectangle反复比改变它的所有字段慢吗?

时间:2011-08-06 15:12:58

标签: c#

目前我有这段代码:

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事件处理程序中,因此它经常被调用,我想知道是否实例化通常会导致相当大的速度差异的新对象。

谢谢!

1 个答案:

答案 0 :(得分:3)

如果我不得不猜测,那么因为这是struct,我希望它们相同。我更喜欢第二种(“新的......”)用于语义的原因 - 加上第一种不适用于属性(只有字段/变量/数组查找)。

要获得准确的衡量标准:在您的上下文中 。我诚实地怀疑这将是一个明显不同的决定。