我有一个结构,它在构造函数中接受 3 个命名参数......
public struct MyData
{
private readonly double _value1;
private readonly double _value2;
private readonly double _value3;
public MyData(
double value1 = 1.0,
double value2 = 2.0,
double value3 = 3.0)
{
_value1 = value1;
_value2 = value2;
_value3 = value3;
}
}
创建类的方法调用接收三个可空的双精度,只有当可空双精度不为空时,我才想使用它们来创建 MyData 类...
public MyData CreateMyData(double? value1, double? value2, double? value3)
{
MyData myData;
if (value1.HasValue)
{
if (value2.HasValue)
{
if (value3.HasValue)
{
myData = new MyData(value1, value2, value3);
}
else
{
myData = new MyData(value1, value2);
}
}
else
{
if (value3.HasValue)
{
myData = new MyData(value1, value3: value3);
}
else
{
myData = new MyData(value1);
}
}
}
else
{
if (value2.HasValue)
{
if (value3.HasValue)
{
myData = new MyData(value2: value2, value3: value3);
}
else
{
myData = new MyData(value2: value2);
}
}
else
{
if (value3.HasValue)
{
myData = new MyData(value3: value3);
}
else
{
myData = new MyData();
}
}
}
return myData;
}
有没有更好的方法来编写此方法而无需修改 MyData 类?即我可以有条件地传递命名参数还是传递一个指示符来表示默认的命名参数值?