我有一個基類名爲CollidableObject
和一個名爲Player
,Enemy
,InertObject
夫婦繼承類等迭代通過基類的所有實例和繼承的類
我試圖找到一個簡單的方法來遍歷通過它們的所有實例,所以我最初創建了一個類型爲CollidableObject
的列表,並將所有繼承類的實例放在那裏。
的事情是,由於多態的性質,當我做了以下
foreach (CollidableObject CollidableObject in collidableObjects)
{
if (CollidableObject is Player)
{
CollidableObject.Draw(spriteBatch, testPlayerTexture);
}
// Then the same prodedure for each type of CollidableObject.
// Might change to switch or something.
}
它調用從CollidbaleObject
基地,而不是從覆蓋/新通用Draw方法抽籤方法Player/Enemy/inertObject類。
我該如何解決這個問題。有沒有辦法從同一棵樹中迭代對象集合,但保持它們的繼承類型?
我意識到這是輔助性的,但如果您必須爲每種子類型提供不同的參數方法,那麼這種方法就會失敗。無論如何,請查看關於覆蓋方法的文章;你應該有一個虛擬的方法,並使用覆蓋關鍵字來覆蓋它:http://msdn.microsoft.com/en-us/library/ebca9ah3.aspx – Casey
*「不是覆蓋/從播放器/敵人/惰性對象新的類。「* - 哪一個,重寫或新? – Harrison