public static string getText(Shape obj)
RightTriangle rt = obj as RightTriangle;
return "Side A: " + rt.sideA.ToString();
Circle circle = obj as Circle;
retString += "Radius: " + circle.radius.ToString();
retString += "Height: " + cone.height.ToString();
public static void Main()
RightTriangle rt = new RightTriangle
Shape[] array = new Shape[3];
Console.WriteLine("Using getText()");
foreach (Shape p in array)
Console.WriteLine(p.GetType());
Console.WriteLine(getText(p));
Console.WriteLine("Using ToString()");
foreach (Shape p in array)
Console.WriteLine(p.GetType());
Console.WriteLine(p.ToString());
public abstract class Shape
public abstract double getArea();
public override string ToString()
return "Area: " + this.getArea();
public class RightTriangle : Shape
public override double getArea()
return (this.sideA * this.sideB) / 2;
public override string ToString()
return "Side A: " + this.sideA + " Side B: " + sideB + " " + base.ToString();
public class Circle : Shape
public override double getArea()
return Math.Pow(this.radius, 2) * Math.PI;
public override string ToString()
return "Radius: " + this.radius + " " + base.ToString();
public class Cone : Circle
public override double getArea()
return Math.PI * this.radius * (this.radius + Math.Sqrt(Math.Pow(this.height, 2) + Math.Pow(this.radius, 2)));
public override string ToString()
return "Height : " + height + " " + base.ToString();