我正在嘗試使用C#(使用與該問題無關的XNA)製作2D遊戲。我製作了一個基本的貼圖類,遊戲中的所有貼圖都將繼承基本功能,例如如何將自己繪製到屏幕等等。在多個類類型的列表中調用特定的類功能
那麼我有什麼是基本拼貼類持有每一個其他類從基類,繼承了IE瀏覽器的列表:門,牆壁,地板,瓷磚等
List<TileBase> tileList = new List<TileBase>();
...
tileList.Add(new Door(arguments));
tileList.Add(new Wall(arguments));
問題來了稍後當我只想影響該列表內的某種類型的類時。例如,門具有Open(),Close()和Toggle()的某些功能。 如果我嘗試只是讓一個循環通過每門級循環在我的名單:
foreach(Door door in tileList)
{
door.Toggle();
}
我得到一個錯誤:
"Unable to cast object of type '...Tiles.Wall' to type '...Tiles.Door'."
所以基本上,我有一個完整不同類別的清單。如何在循環中的類中實現特定函數而不會使程序崩潰,因爲它試圖在不具有所述函數的另一類類上進行嘗試。
@ user2499152'沽使用System.Linq的;'你的文件的頂部,這樣'OfType'將在範圍之內。 –
絢爛!似乎工作,感謝您的快速反應!這一定會派上用場。我很高興解決方案很簡單,因爲我很難找到任何類似的問題。謝謝! :) – Khan