C# 如何修复控制台写入类名称的问题?
我是C#的新手,几个小时以来我一直在努力解决这个问题,非常感谢您的帮助 我想创建一个多边形并记下每个点的位置 目前我有: -类点C# 如何修复控制台写入类名称的问题?,c#,indexer,C#,Indexer,我是C#的新手,几个小时以来我一直在努力解决这个问题,非常感谢您的帮助 我想创建一个多边形并记下每个点的位置 目前我有: -类点 class Point { private int x; private int y; public Point(int x2, int y2) { x = x2; y = y2; } } -类多边形 class Polygon { private Point[] Points;
class Point
{
private int x;
private int y;
public Point(int x2, int y2)
{
x = x2;
y = y2;
}
}
-类多边形
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;}
}
}
类多边形
{
私人点[]点;
公共多边形(参数点[]a)
{
点=新点[a.长度];
for(int i=0;i
现在我的主要观点是:
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]);
}
Polygon First=新多边形(新点(7,4)、新点(4,1)、新点(2,1));
第一个[0]=新点(3,4);
控制台写入线(“多边形点”);
对于(int i=0;i
但是现在,我在控制台中看到的不是“多边形点”之后点的每个位置:
它应该是什么样子的:
它应该是什么样子的:C#不像其他语言那样被“解释”,因此Console.WriteLine
方法不会猜出您想要打印什么
要给出您正在寻找的结果,使用当前代码,您必须为点
类提供公共属性:
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}");
}
for(int i=0;i
我添加了一个对ToString
的重写,这样您的点
类在转换为字符串时具有预期的输出。类似于“x:3y:4”
的输出
现在,它很适合成为
结构,而不是类
,您需要知道一件事:重写字符串ToString()
使用.ToString()提供解决方案重写对于这种情况来说似乎也很好。@CoderofCode我个人并不太喜欢重写.ToString()
方法。但是如果您想在这里添加它,请继续。ToString()
有合法的用例。@MickyD绝对正确。我只是不想把它作为一个对语言不熟悉的人的答案,因为误用它可能会导致相当困难的调试,从经验来看,但不管怎样,Theodor Zoulias的解决方案都是有效的。“对语言来说是新的”-啊,是的,很好的观点。通过提供属性,可以更清楚地了解正在发生的事情+先生好,非常感谢您的帮助,先生。成功了!。不客气,我的朋友!我希望大家竖起大拇指。:-)@你说得对。我更新了我的答案。
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}";
}
}