Передача объектов другого класса в конструктор через 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];
}
}