static void PrintFigures(Figure[] figures, string message) { Console.WriteLine(" " + message); Console.WriteLine("============================================="); foreach (Figure figure in figures) { Console.WriteLine("{0}. Площадь={1:F2}", figure.WhoAmI(), figure.ComputeArea()); } Console.WriteLine(); }
static void Main() { Figure[] figures = new Figure[] { new Rectangle(3,4), new Square(3), new Ellipse(2.5, 1.9), new Circle(3.1), new Triangle(3.7) }; PrintFigures(figures, "До сортировки"); Array.Sort(figures); PrintFigures(figures, "После сортировки (по возрастанию площади)"); }
static void Main() { Figure[] figures = new Figure[] { new Figure(), new Rectangle(3,4), new Square(3), new Ellipse(2.5, 1.9), new Ellipse(3.1, 3.1), new Circle(3.1), }; foreach (Figure figure in figures) { PrintFigure(figure); } }
private static void PrintFigure(Figure figure) { string whoAmI = figure.WhoAmI(); string typeName = figure.GetType().Name; double area = figure.ComputeArea(); if (whoAmI != typeName) Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine( "WhoAmI = {0,-9} ; Имя класса {1,-9} ; Площадь={2:F2}", whoAmI, typeName, area ); Console.ResetColor(); }
static void Main() { Figure[] figures = new Figure[] { // Правила языка запрещают создавать экземпляры абстрактных типов //new Figure(), new Rectangle(3,4), new Square(3), new Ellipse(2.5, 1.9), new Ellipse(3.1, 3.1), new Circle(3.1), }; foreach (Figure figure in figures) { PrintFigure(figure); } }
public static void Main() { Figure[] figures = new Figure[] { new Figure(), new Rectangle(3,4), new Square(3), new Ellipse(2.5, 1.9), new Ellipse(3.1, 3.1), new Circle(3.1), new Triangle(2), }; foreach (Figure figure in figures) { PrintFigure(figure.WhoAmI(), figure.GetType().Name, figure.ComputeArea()); #region Неправильная попытка исправить код с помощью проверки типа //// Это анти-пример //// НИКОГДА НЕ ПИШИТЕ ТАКОЙ КОД! //if (figure is Ellipse) //{ // Ellipse ellipse = (Ellipse)figure; // PrintFigure(ellipse.WhoAmI(), ellipse.GetType().Name, ellipse.ComputeArea()); //} //else if (figure is Circle) //{ // Circle circle = (Circle)figure; // PrintFigure(circle.WhoAmI(), circle.GetType().Name, circle.ComputeArea()); //} //else if (figure is Square) //{ // Square square = (Square)figure; // PrintFigure(square.WhoAmI(), square.GetType().Name, square.ComputeArea()); //} //else if (figure is Rectangle) //{ // Rectangle rectangle = (Rectangle)figure; // PrintFigure(rectangle.WhoAmI(), rectangle.GetType().Name, rectangle.ComputeArea()); //} #endregion } }
static void Main() { Figure[] figures = new Figure[] { new Rectangle(3,4), new Square(3), new Ellipse(2.5, 1.9), new Circle(3.1), // В классе Triangle метод ToString() отсутствует. Обрати внимание на разницу в выводе new Triangle(3.7) }; foreach (Figure figure in figures) { // WriteLine автоматически вызывает виртуальный метод ToString() // Если наш класс и его базовые классы не реализуют его, то будет вызвана реализация System.Object.ToString() Console.WriteLine(figure); } }