一個簡單的問題投對象...如何從一個數組
我有一個抽象類,細胞和兩個類BorderCell和BoardCell,從細胞類繼承。然後我有一個Cell []類型的Cells數組,其中包含BorderCell和BoardCell類型的對象。
abstract class Cell
{
}
class BorderCell : Cell
{
public void Method1(){};
}
class BoardCell: Cell
{
public void Method2(){};
}
...
Cell[] Cells = new Cell[x];
for (int i = 0; i < x; i++){
Cells[i] = new BorderCell();
// or
Cells[i] = new BoardCell();
}
現在我想將電池轉換爲BorderCell和運行其方法1,像這樣:
(Border)Cells[i].Method1();
但是,這是不行的,我必須使用:
BorderCell borderCell = (BorderCell)Cells[i];
borderCell.Method1();
這是唯一(和正確的方式)做到這一點)?
我會在這裏回顧一下你的設計 - 不得不拋棄到派生類是一種糟糕的設計氣味 - 如果你將它們保存在同一個集合中作爲基類型,我期望它們是真正的多態(Liskov原理)。 – 2010-06-30 09:32:17
Herbie博士:我很樂意提供建議,查看此主題:http://stackoverflow.com/questions/3140281/what-data-structure-to-use-in-my-example – sventevit 2010-06-30 09:47:54