Я новичок в С#, и я борюсь с этим с незапамятных времен и был бы признателен за вашу помощь.
Я хочу создать многоугольник и записать каждую позицию точек.
В настоящее время у меня есть это: -Class Point
class Point
{
private int x;
private int y;
public Point(int x2, int y2)
{
x = x2;
y = y2;
}
}
-Class Полигон
class Polygon
{
private Point[] Points;
public Polygon(params Point[] a)
{
Points = new Point[a.Length];
for (int i = 0; i < a.Length; i++)
{
Points[i] = a[i];
}
}
public Point this[int index]
{
get { return Points[index]; }
set { Points[index] = value;}
}
}
Теперь у меня есть это в моей главной:
Polygon First= new Polygon(new Point(7,4), new Point(4,1), new Point(2, 1));
First[0] = new Point(3, 4);
Console.WriteLine("points of polygon ");
for (int i = 0; i < First.PointCounter; i++)
{
Console.WriteLine(First[i]);
}
Но теперь вместо того, чтобы видеть каждую позицию точки после "точек многоугольника", я вижу это в своей консоли: https://imgur.com/Z5aVFMK
Как это должно выглядеть: https://imgur.com/a/aFkdrEF
Как это должно выглядеть: https://imgur.com/a/aFkdrEF
Я добавил переопределение ToString
чтобы ваш класс Point
имел ожидаемый результат при преобразовании в строку. Вывод наподобие "x:3 y:4"
.
class Point
{
public int x { get; private set; }
public int y { get; private set; }
public Point(int x2, int y2)
{
x = x2;
y = y2;
}
public override string ToString()
{
return $"x:{x,-3} y:{y,-3}";
}
}
Как и сейчас, это хороший кандидат на то, чтобы стать struct
а не class
.
С# не "интерпретируется", как другие языки, поэтому метод Console.WriteLine
не будет угадывать, что вы пытаетесь напечатать.
Чтобы получить результат, который вы ищете, с вашим текущим кодом вам нужно будет предоставить открытые свойства вашему классу Point
:
public int X { get { return x;} set{ x = value;} }
public int Y { get { return y;} set{ y = value;} }
После чего вы можете получить доступ к этим свойствам в цикле for:
for (int i = 0; i < First.PointCounter; i++)
{
Console.WriteLine($"x:{First[i].X} y:{First[i].Y}");
}
.ToString()
. Но если вы хотите добавить это сюда, пожалуйста, продолжайте.
override string ToString()