Массив из разных объектов (квадраты, линии, окружности) - C#
Формулировка задачи:
Привет, ребят.
Есть массив из разных объектов(квадраты, линии, окружности) вразнобой. Каждый объект - разный класс.
И для каждого класса есть своя функция рисования.
Создал я общую функцию для рисования, создал в ней switch:
Ии... Все работает! Но, чувствуется мне, что это все можно сделать одной строкой, что-то наподобие:
То есть как можно узнать тип объекта который находится в переданной ячейке массива и сразу же эту ячейку к нему привести?
Всем спасибо!
private void Draw(Shape shape) { switch(shape.GetType().ToString()) { case "ООП.Box": Draw((Box)shape); break; case "ООП.Circle": Draw((Circle)shape); break; case "ООП.Line": Draw((Line)shape); break; case "ООП.ColorBox": Draw((ColorBox)shape); break; case "ООП.ColorCircle": Draw((ColorCircle)shape); break; case "ООП.ColorLine": Draw((ColorLine)shape); break; } }
Draw((shape.GetType()) shape);
Добавил:
Хочется увидеть решения не больше одной строки! Можно допилить классы, чтобы в Draw(Shape shape) была одна строчка. Но это не то, что я хочу увидеть.
Решение задачи: «Массив из разных объектов (квадраты, линии, окружности)»
textual
Листинг программы
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication2 { class Program { static void Main(string[] args) { List<IDrawable > figures = new List<IDrawable> { new Line(), new Triangle(), new Circle(), new Line() }; foreach (var item in figures) { item.Draw(); } Console.ReadLine(); } } interface IDrawable { void Draw(); } class Triangle : IDrawable { public void Draw() { //Тут реализация... Console.WriteLine("Triangle"); } } class Circle : IDrawable { public void Draw() { //Тут реализация... Console.WriteLine("Circle"); } } class Line : IDrawable { public void Draw() { //Тут реализация... Console.WriteLine("Line"); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д