Передача объектов другого класса в конструктор через params - C#
Формулировка задачи:
Здравствуйте. В учебнике есть пример: класс Figure, класс Point. В зависимости от того, сколько "вершин" принимает конструктор класса Figure, перегрузить его конструктор (принимает от 3 до 5 вершин). Следовательно, у Figure есть поле массив объектов Point, который должен инициализироваться передаваемыми объектами
Код конструктора класса Figure (из учебника):
Я его попробовал переделать и вот собственно вопрос: идентичен ли ниже приведенный способ? Не вылезут ли подводные камни, учитывая что тут используются ссылочные типы? (пока немного плаваю в работе с ссылочными типами )
(создание объекта класса Figure в main)
Листинг программы
- public Figure(Point p1, Point p2, Point p3)
- {
- point = new Point[3];
- point[0] = p1;
- point[1] = p2;
- point[2] = p3;
- type = "Triangle";
- public Figure(Point p1, Point p2, Point p3, Point p4)
- {
- point = new Point[4];
- point[0] = p1;
- point[1] = p2;
- point[2] = p3;
- point[3] = p4;
- type = "Tetragon";
- public Figure(Point p1, Point p2, Point p3, Point p4)
- {
- point = new Point[5];
- point[0] = p1;
- point[1] = p2;
- point[2] = p3;
- point[3] = p4;
- point[4] = p5;
- type = "Pentagon";
- }
Листинг программы
- public Figure(params Point[] arr)
- {
- int i = 0;
- point = new Point[arr.Length];
- while (i < arr.Length)
- {
- point[i] = arr[i++];
- }
- switch (i)
- {
- case (3): { type = "Triangle"; break; }
- case (4): { type = "Tetragon"; break; }
- case (5): { type = "Petagon"; break; }
- }
- }
Листинг программы
- Figure figure = new Figure(new Point("A", 1, 1), new Point("B", 1, 4), new Point("C", 4, 4));
Решение задачи: «Передача объектов другого класса в конструктор через params»
textual
Листинг программы
- class Figure
- {
- private static readonly Dictionary<int, string> Types = new Dictionary<int, string>
- {
- { 3, "Triangle" },
- { 4, "Tetragon" },
- { 5, "Petagon" }
- };
- public Point[] Points { get; }
- public string Type { get; }
- public Figure(params Point[] points)
- {
- Points = points;
- Type = Types[points.Length];
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д