我正在尝试使用标头public KsuPoint(double x0, double y0)
现在我也有类中的属性,如下所示
private double x;
public double X
{
get { return x; }
}
private double y;
public double Y
{
get { return y; }
}
这个构造函数假设初始化属性X和Y ...
这是对的吗?还是我离开了?
public KsuPoint(double x0, double y0)
{
new KsuPoint(x0, y0);
}
答案 0 :(得分:4)
构造函数需要将它的参数映射到类的私有字段 - 这是您的类应该是这样的:
class KsuPoint
{
private double x;
private double y;
public double X { get { return x; } }
public double Y { get { return y; } }
public KsuPoint(double x0, double y0)
{
this.x = x0;
this.y = y0;
}
}
如果你想更简洁,你可以这样做:
class KsuPoint
{
public double X { get; private set; }
public double Y { get; private set; }
public KsuPoint(double x0, double y0)
{
this.X = x0;
this.Y = y0;
}
}
答案 1 :(得分:0)
当您想要通常在课堂外创建类的新对象时,不会只使用new。
public KsuPoint(double x0, double y0)
{
x = x0;
y = y0;
}
您的代码中的其他地方就是:
KsuPoint point = new KsuPoint(3, 4);
如果您使用的是C#3.0,也可以这样做:
class KsuPoint
{
public double X { get; private set; }
public double Y { get; private set; }
public KsuPoint(double x0, double y0)
{
X = x0;
Y = y0;
}
}
答案 2 :(得分:0)
不,这会导致无限递归的坏情况。只需正常分配值,即
x = x0;
y = y0;
答案 3 :(得分:0)
您需要添加setter,如下所示:
public double X
{
get { return x; }
set { x = value; }
}
如果你只想要简单的getter和setter,这个语法更短,在我看来更容易阅读:
public double x0 { get; set; }
public double y0 { get; set; }
然后,您只需将参数分配给该字段,就像许多其他答案所示。