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