我有一个值列表,我保持这样,
public enum DisplayUnits
{
Vertical = 0,
Horizontal = 1,
Track = 2,
Empty = 3,
}
public static string DisplayUnitsImage(DisplayUnits unit)
{
switch (unit)
{
case DisplayUnits.Vertical:
return @"/image1";
case DisplayUnits.Horizontal:
return @"/image2";
case DisplayUnits.Track:
return @"/image3";
case DisplayUnits.Empty:
return @"/image4";
default:
return @"/image5";
}
}
public static string DisplayUnitID(DisplayUnits unit)
{
switch (unit)
{
case DisplayUnits.Vertical:
return @"1234";
case DisplayUnits.Horizontal:
return @"1235";
case DisplayUnits.Track:
return @"1236";
case DisplayUnits.Empty:
return @"1237";
default:
return @"1238";
}
}
为了检索图像路径,我将通过传递枚举来调用该方法 它可以用更简单的方式编写,因为添加一个值我需要在三个地方改变吗? 在这种情况下,建议使用元组?
答案 0 :(得分:1)
让我完全改变我的回答。
一旦您说明您需要对所有可能的unitid
和image
进行硬编码,您可以将它们存储在代码中的数组中,如:
static string[] Images =
{
"/VerticalImage",
"/HorizontalImage",
"/TrackImage",
"/EmptyImage"
}; //and so on...
正确的图像(或unitid)存储在与相关DisplayUnits
int
表示匹配的位置。
然后,您将能够使用所需的方法:
public static string DisplayUnitsImage(DisplayUnits unit)
{
return string.Concat(Images[(int)unit], (int)unit);
}
因此,如果编辑DisplayUnits
枚举,您需要编辑的唯一内容是
string[] Images
)您无需编辑方法的主体(DisplayUnitsImage
,DisplayUnitID
和其他方法(如果有)。
甚至更容易。如果你的所有方法都工作方式类似,那就是简单地连接数据字段和单位表示,那么你可以有一个方法而不是所有方法:
public static string DisplayUnitsData(string[] data, DisplayUnits unit)
{
return string.Concat(data[(int)unit], (int)unit);
}
并将相应的数组(如本例中的Images
)作为data
参数传递:
string result = DisplayUnitsData(Images, DisplayUnits.Vertical);
答案 1 :(得分:1)
public static String DisplayUnitsImage(Int32 value)
{
return @"/image" + value;
}
public static String DisplayUnitID(Int32 value)
{
return "123" + value;
}