[英]Initializing a property in c#
我有一个构造函数我试图用标题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);
}
构造函数需要将它的参数映射到类的私有字段 - 这是您的类应该是这样的:
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;
}
}
当您想要通常在类之外创建类的新对象时,不能仅使用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;
}
}
不,这将导致无限递归的坏情况。 只需正常分配值,即
x = x0;
y = y0;
你需要添加setter,如下所示:
public double X
{
get { return x; }
set { x = value; }
}
如果你只想要简单的getter和setter,这个语法更短,在我看来更容易阅读:
public double x0 { get; set; }
public double y0 { get; set; }
然后,您只需将参数分配给字段,就像许多其他答案所示。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.