有没有更好的方法来做我正在做的事情:
class Sample {
int SampleValueX, SampleValueY;
string SampleFacing;
public Sample(int samplevaluex, string samplefacing)
{
SampleValueX = startpositionx;
SampleValueY = 0;
SampleFacing = samplefacing;
}
public Sample(int samplevaluey, string samplefacing)
{
SampleValueX = 0;
SampleValueY = startpositionx;
SampleFacing = samplefacing;
}
}
这甚至被称为构造函数重载吗?如果我错了,请纠正我。
答案 0 :(得分:10)
您可以使用可选参数
class Sample {
int SampleValueX, SampleValueY;
string SampleFacing;
public Sample(string samplefacing, int samplevaluex = 0, int samplevaluey = 0)
{
SampleValueX = samplevaluex;
SampleValueY = samplevaluey;
SampleFacing = samplefacing;
}
}
请注意,可选参数必须出现在强制性参数之后
答案 1 :(得分:4)
这不起作用,因为你有两个具有相同参数的构造函数,并且在构造函数中你无法区分一个表单与另一个表单。
使用Visual Studio 2008及后续版本,您可以使用object initializer syntax
初始化对象 Sample sampleInstance = new Sample
{
SampleValueX = 0,
SampleValueY = 10,
SampleFacing = "MySample"
};
这将消除初始化内部成员的需要 当然,这要求您的内部属性变为公共属性,并非总是如此。
class Sample
{
public int SampleValueX {get;set;};
public int SampleValueY {get;set;};
public string SampleFacing {get; set;};
......
答案 2 :(得分:2)
在我看来,这种逻辑不会增加课堂价值。如果该类有3个参数,并且您想从构造函数中设置它们,我将添加一个带有3个参数的构造函数,并在构造函数调用中将其设置为0。
对于类用户来说,这种方式会更清楚类参数值是什么。
答案 3 :(得分:2)
我同意可选参数可能就是你想要的。另一种选择可能是:
class Sample
{
int SampleValueX, SampleValueY;
string SampleFacing;
public Sample(XSetting xSetting)
{
SampleValueX = xSetting.X;
SampleValueY = 0;
SampleFacing = xSetting.SampleFacing;
}
public Sample(YSetting ySetting)
{
SampleValueX = 0;
SampleValueY = ySetting.Y;
SampleFacing = ySetting.SampleFacing;
}
}
public class XSetting
{
public int X { get; set; }
public string SampleFacing { get; set; }
}
public class YSetting
{
public int Y { get; set; }
public string SampleFacing { get; set; }
}
正如您的代码示例所示,这可能有点过分。
您的代码示例不会编译btw。