我有以下代码 -
public static int GetViewLevel(string viewLevelDesc)
{
try
{
switch (viewLevelDesc)
{
case "All":
return 0;
case "Office":
return 10;
case "Manager":
return 50;
default:
throw new Exception("Invalid View Level Description");
}
}
catch (Exception eX)
{
throw new Exception("Action: GetViewLevel()" + Environment.NewLine + eX.Message);
}
}
public static string GetViewLevelDescription(int viewLevel)
{
try
{
switch (viewLevel)
{
case 0:
return "All";
case 10:
return "Office";
case 50:
return "Manager";
default:
throw new Exception("Invalid View Level Description");
}
}
catch (Exception eX)
{
throw new Exception("Action: GetViewLevelDescription()" + Environment.NewLine + eX.Message);
}
}
这两个静态方法使我能够从字符串ViewLevelDesc获取一个int ViewLevel,反之亦然。我确信我这样做的方式比它需要的要麻烦得多,而且我正在寻找一些如何实现相同目标但更简洁的建议。 int / string对的列表将显着增加。上面代码中的那些只是我打算使用的前三个。
答案 0 :(得分:4)
您可以使用枚举:
public enum Level
{
All = 0,
Office = 50,
Manager = 100
}
你可以通过这种方式从枚举中获取整数和字符串值:
Level level = Level.Manager;
int intLevel = (int)level;
string strLevel = level.ToString();
另一种方式
Level l1 = (Level)intLevel;
Level l2 = (Level)Enum.Parse(typeof(Level), strLevel);
您可以方便地使用枚举来传递值,并在处理外部接口时仅将它们转换为整数或字符串。
答案 1 :(得分:0)
这里的简单字典应该符合您的需求:
Dictionary<string, int> dictionary = new Dictionary<string, int>();
dictionary.Add("All", 0);
dictionary.Add("Office", 50);
dictionary.Add("Manager", 100);
打印所有键/值对:
foreach (KeyValuePair<string, int> keyValuePair in dictionary)
{
Console.WriteLine("Key: "+keyValuePair.Key+", Value: "+keyValuePair.Value);
}
或者使用像Szymon这样的枚举。