实例化新对象或更改现有对象C#的值

时间:2014-01-25 18:37:05

标签: c# instantiation rectangles

我无法确定实现绘制碰撞矩形代码的方法。这样做的最佳做法是什么?是否可以在每个drawcall上实例化一个新的矩形,具有正确的大小和位置,如下所示:

public void Draw(SpriteBatch spriteBatch)
        {
            Rectangle topLine = new Rectangle(CollisionRect.X, CollisionRect.Y, CollisionRect.Width, 1);
        }

或者在我的字段中创建矩形更好,然后只需更改我的绘制方法中已存在的对象的值,即使代码会更“混乱”

public void Draw(SpriteBatch spriteBatch)
{
    topline.Height = 1;
    topline.Width = CollisionRect.Width;
    topline.X = CollisionRect.X;
    topline.Y = CollisionRect.Y;

}

2 个答案:

答案 0 :(得分:0)

我会选择第一个选项。如果在topLine方法的范围之后不再需要Draw,理想情况下它应该作为“本地变量”。

只有在Draw方法范围之后需要时才需要字段。

答案 1 :(得分:-1)

我会做第二次,因此GC的工作量减少了。 但如果你有时间,先用第一个然后第二个画几千。检查你赢得的表现是否值得为麻烦带来麻烦: - )