我有一個結構這需要在給構造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類?即我可以有條件地傳遞命名參數,還是可以傳遞指示符來表示默認的命名參數值?
爲什麼你不想修改'MyData'? – svick 2011-06-12 14:50:43
在大多數情況下,我只是想知道是否有辦法在不修改MyData的情況下執行此操作。我問這是爲了防止MyData不受我控制(例如第三方庫或其他)的情況。至少現在至少有 – Noob 2011-06-12 16:00:40
,大多數.Net庫不使用可選參數。 – svick 2011-06-12 16:15:36