我有这5个类。一个称为Figura的基类是一个抽象类,另外还有4个具体的派生类。
我必须创建一个大小为8的Figuras阵列(两个Cuadrado,两个Rectangulo,两个Triangulo和两个Circulo),所以我这样做了:
Figuras[] figuras = new Figuras[8];
figuras[0] = new Cuadrado(1);
figuras[1] = new Cuadrado(2);
figuras[2] = new Rectangulo(2, 1);
figuras[3] = new Rectangulo(6, 2);
figuras[4] = new Triangulo(1, 2, 2);
figuras[5] = new Triangulo(3, 3, 4);
figuras[6] = new Circulo(1);
figuras[7] = new Circulo(4);
然后,我遍历数组以计算每个图形的面积和周长。当我尝试调用仅属于图形Circulo的方法calcularDiametro()时,问题就来了。我怎样才能做到这一点?
我尝试了以下操作,但不起作用。
foreach (Figuras f in figuras)
if (f is Circulo)
f.calcularDiametro();
任何帮助,将不胜感激。
您需要将其强制转换Circulo
为以调用Circulo
特定于方法的方法:
foreach (Figuras f in figuras)
{
if (f is Circulo)
(Circulo)f.calcularDiametro();
}
请注意,这有点浪费,因为它会进行两次类型检查(这是一项昂贵的操作)。一种避免浪费的方法是使用as
:
foreach (Figuras f in figuras)
{
Circulo circ = f as Circulo;
if (circ != null)
{
circ.calcularDiametro();
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句