Передача объектов другого класса в конструктор через params - C#

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

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

Здравствуйте. В учебнике есть пример: класс Figure, класс Point. В зависимости от того, сколько "вершин" принимает конструктор класса Figure, перегрузить его конструктор (принимает от 3 до 5 вершин). Следовательно, у Figure есть поле массив объектов Point, который должен инициализироваться передаваемыми объектами Код конструктора класса Figure (из учебника):
Листинг программы
  1. public Figure(Point p1, Point p2, Point p3)
  2. {
  3. point = new Point[3];
  4. point[0] = p1;
  5. point[1] = p2;
  6. point[2] = p3;
  7. type = "Triangle";
  8. public Figure(Point p1, Point p2, Point p3, Point p4)
  9. {
  10. point = new Point[4];
  11. point[0] = p1;
  12. point[1] = p2;
  13. point[2] = p3;
  14. point[3] = p4;
  15. type = "Tetragon";
  16. public Figure(Point p1, Point p2, Point p3, Point p4)
  17. {
  18. point = new Point[5];
  19. point[0] = p1;
  20. point[1] = p2;
  21. point[2] = p3;
  22. point[3] = p4;
  23. point[4] = p5;
  24. type = "Pentagon";
  25. }
Я его попробовал переделать и вот собственно вопрос: идентичен ли ниже приведенный способ? Не вылезут ли подводные камни, учитывая что тут используются ссылочные типы? (пока немного плаваю в работе с ссылочными типами )
Листинг программы
  1. public Figure(params Point[] arr)
  2. {
  3. int i = 0;
  4. point = new Point[arr.Length];
  5. while (i < arr.Length)
  6. {
  7. point[i] = arr[i++];
  8. }
  9. switch (i)
  10. {
  11. case (3): { type = "Triangle"; break; }
  12. case (4): { type = "Tetragon"; break; }
  13. case (5): { type = "Petagon"; break; }
  14. }
  15. }
(создание объекта класса Figure в main)
Листинг программы
  1. Figure figure = new Figure(new Point("A", 1, 1), new Point("B", 1, 4), new Point("C", 4, 4));

Решение задачи: «Передача объектов другого класса в конструктор через params»

textual
Листинг программы
  1. class Figure
  2. {
  3.     private static readonly Dictionary<int, string> Types = new Dictionary<int, string>
  4.     {
  5.         { 3, "Triangle" },
  6.         { 4, "Tetragon" },
  7.         { 5, "Petagon" }
  8.     };
  9.    
  10.     public Point[] Points { get; }
  11.    
  12.     public string Type { get; }
  13.    
  14.     public Figure(params Point[] points)
  15.     {
  16.         Points = points;
  17.         Type = Types[points.Length];
  18.     }
  19. }

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


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

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

11   голосов , оценка 3.636 из 5

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

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

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