How to Use Enum in switch case for comparing string- C#
本问题已经有最佳答案,请猛点这里访问。
在下面有一个枚举的类
1 2 3 4 5 6 7 | public enum Colors { red, blue, green, yellow } |
我想使用它的开关为例
1 2 3 4 5 6 7 8 9 10 | public void ColorInfo(string colorName) { switch (colorName) { // i need a checking like (colorname=="red") case Colors.red: Console.log("red color"); break; } } |
我要跟随误差
1 | Cannot implicitly convert type 'Color' to string |
我对这个人的帮助。
我认为你最好的办法是把你得到的作为输入的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | public void ColorInfo(string colorName) { Colors tryParseResult; if (Enum.TryParse<Colors>(colorName, out tryParseResult)) { // the string value could be parsed into a valid Colors value switch (tryParseResult) { // i need a checking like (colorname=="red") case Colors.red: Console.log("red color"); break; } } else { // the string value you got is not a valid enum value // handle as needed } } |
不能将
如果要将
1 2 3 4 5 | public void ColorInfo(string colorName) { if (Colors.red.ToString() == colorName) Debug.Print("red color"); } |
不能使用
另一种方法是先将字符串转换为
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | public void ColorInfo(string colorName) { try { Colors color = (Colors)Enum.Parse(typeof(Colors), colorName); switch (color) { case Colors.red: Debug.Print("red color"); break; } } catch(ArgumentException ex) { Debug.Print("Unknown color"); } } |