【发布时间】:2017-02-05 13:34:12
【问题描述】:
我有一个列表框,可以填充来自两个枚举之一或两个枚举的值。基本上这段代码:
public enum NamesA { Adam , Albert }
public enum NamesB { Bert , Bob }
以后
List<string> nameList = new List<string>();
if (reason) nameList.AddRange(Enum.GetNames(typeof(NamesA)));
else if (reason) nameList.AddRange(Enum.GetNames(typeof(NamesB)));
else
{
nameList.AddRange(Enum.GetNames(typeof(NamesA)));
nameList.AddRange(Enum.GetNames(typeof(NamesB)));
}
foreach (string name in nameList)
listBox1.Items.Add(name);
我的问题是,稍后在代码中我希望根据用户在列表框中的选择发生不同的事情。
我知道我可以这样检查:
string chosenName = listBox1.SelectedItem.ToString();
if (chosenName.Equals(NamesA.Adam.ToString()))
{ /*some stuff happens*/ }
else if (chosenName.Equals(NamesB.Bob.ToString()))
{ /*other stuff happens*/ }
/* ...and so on */
...但我更喜欢使用 Switch。 我找不到让它工作的方法。有人有想法吗?
编辑:我还应该说,开关必须有空间来处理未来的 NamesC、...D、...E 等枚举。
【问题讨论】:
-
switch(chosenName) { case NamesA.Adam.ToString (): //logic break; ....} -
NamesA.Adam.ToString ()不是对 case 语句有效的常量表达式。 -
请检查我的解决方案。我希望它能满足您的要求。
-
哦,是的..我的错。错过了。
标签: c# enums switch-statement