如何 "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[] 作为参数类型?
我有一个接收对象数组的函数。
我还有一个名为 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[] 作为参数类型?