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

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

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

Здравствуйте. В учебнике есть пример: класс Figure, класс Point. В зависимости от того, сколько "вершин" принимает конструктор класса Figure, перегрузить его конструктор (принимает от 3 до 5 вершин). Следовательно, у Figure есть поле массив объектов Point, который должен инициализироваться передаваемыми объектами Код конструктора класса Figure (из учебника):
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 в main)
            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];
    }
}

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


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

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

11   голосов , оценка 3.636 из 5
Похожие ответы