Массив из разных объектов (квадраты, линии, окружности) - C#

Узнай цену своей работы

Формулировка задачи:

Привет, ребят. Есть массив из разных объектов(квадраты, линии, окружности) вразнобой. Каждый объект - разный класс. И для каждого класса есть своя функция рисования. Создал я общую функцию для рисования, создал в ней switch:
Листинг программы
  1. private void Draw(Shape shape)
  2. {
  3. switch(shape.GetType().ToString())
  4. {
  5. case "ООП.Box": Draw((Box)shape); break;
  6. case "ООП.Circle": Draw((Circle)shape); break;
  7. case "ООП.Line": Draw((Line)shape); break;
  8. case "ООП.ColorBox": Draw((ColorBox)shape); break;
  9. case "ООП.ColorCircle": Draw((ColorCircle)shape); break;
  10. case "ООП.ColorLine": Draw((ColorLine)shape); break;
  11. }
  12. }
Ии... Все работает! Но, чувствуется мне, что это все можно сделать одной строкой, что-то наподобие:
Листинг программы
  1. Draw((shape.GetType()) shape);
То есть как можно узнать тип объекта который находится в переданной ячейке массива и сразу же эту ячейку к нему привести? Всем спасибо!
Добавил: Хочется увидеть решения не больше одной строки! Можно допилить классы, чтобы в Draw(Shape shape) была одна строчка. Но это не то, что я хочу увидеть.

Решение задачи: «Массив из разных объектов (квадраты, линии, окружности)»

textual
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace ConsoleApplication2 {
  8.     class Program {
  9.         static void Main(string[] args) {
  10.             List<IDrawable > figures = new List<IDrawable> {
  11.                 new Line(),
  12.                 new Triangle(),
  13.                 new Circle(),
  14.                 new Line()
  15.             };
  16.             foreach (var item in figures) {
  17.                 item.Draw();
  18.             }
  19.             Console.ReadLine();
  20.         }
  21.     }
  22.     interface IDrawable {
  23.         void Draw();
  24.     }
  25.     class Triangle : IDrawable  {
  26.         public void Draw() {
  27.             //Тут реализация...
  28.             Console.WriteLine("Triangle");
  29.         }
  30.     }
  31.     class Circle : IDrawable {
  32.         public void Draw() {
  33.             //Тут реализация...
  34.             Console.WriteLine("Circle");
  35.         }
  36.     }
  37.     class Line : IDrawable {
  38.         public void Draw() {
  39.             //Тут реализация...
  40.             Console.WriteLine("Line");
  41.         }
  42.     }
  43. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.5 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы