如何 "cast" 一个对象

How to "cast" an Object

我有一个接收对象数组的函数。

我还有一个名为 Rectangle 的 class,但是当我迭代对象数组时,我需要将该索引中的对象转换为 Rectangle 而不是对象,因为我将使用的函数需要参数为 Rectangle 类型:

    //For collision handling - Receives one rectangle
    public bool IsColliding(Rectangle collisionRectangle)
    {
        return this.destinationRect.Intersects(collisionRectangle);
    }

    //Overloading - Receives an array with multiple Rectangles
    public bool IsColliding(Object[] collisionRectangles)
    {
        for(int i = 0; i <= collisionRectangles.Length; i++)
        {
            //CODE WILL FAIL HERE - The method "Intersects" requires and object of type Rectangle
            if(this.destinationRect.Intersects((Rectangle)collisionRectangles[i]))
            {
                return true;
            }
        }
        return false;
    }

编辑 1:

在将数组传递给函数之前声明数组:

Object[] buildingCollitionRectangles =
        {
            new Rectangle[144, 16, 96, 32],
            new Rectangle[144, 48, 96, 64]
        };

正在尝试使用这样的方法:

if(!player.IsColliding(buildingCollitionRectangles))
{
    updatePlayerInput();
}

编辑 2:

尝试将矩形存储在矩形[] 数组中:

好吧,我想我们找到了 - 您在 Rectangle 构造函数中使用了方括号而不是圆括号。照原样,我认为您实际上是在分配两个巨大的 Rectangle 对象多维数组。 https://msdn.microsoft.com/en-us/library/microsoft.xna.framework.rectangle.rectangle.aspx 绝对表明您需要括号。

试试这个:

Rectangle[] buildingCollitionRectangles =
        {
            new Rectangle(144, 16, 96, 32),
            new Rectangle(144, 48, 96, 64)
        };

(注意我觉得这应该也能解决无法使用Rectangle[]数组的问题)

为什么不使用 Rectangle[] 作为参数类型?