Массив из разных объектов (квадраты, линии, окружности) - 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");
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д