一个简单的问题...
我有一个抽象类Cell和两个继承自Cell类的BorderCell和BoardCell类。然后,我有一个Cells数组,其类型为Cell [],其中包含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并运行其Method1,如下所示:
(Border)Cells[i].Method1();
但这不起作用,我必须使用:
BorderCell borderCell = (BorderCell)Cells[i];
borderCell.Method1();
这是唯一(正确的方法)做到这一点吗?
最佳答案
不,您只需要括号即可清楚说明您要强制转换应用于的内容:
((Border)Cells[i]).Method1();
基本上是“。”绑定比强制转换更紧密,因此您的原始代码:
(Border)Cells[i].Method1();
等效于:
(Border) (Cells[i].Method1());
关于c# - 如何从数组中转换对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3147929/