我有一个类似下面的枚举
public enum Colors
{
red,
blue,
green,
yellow
}
我想用它切换案例
public void ColorInfo(string colorName)
{
switch (colorName)
{
// i need a checking like (colorname=="red")
case Colors.red:
Console.log("red color");
break;
}
}
我收到以下错误
Cannot implicitly convert type 'Color' to string
任何人都可以帮忙...
答案 0 :(得分:2)
我认为您最好的选择是尝试将string
值作为输入解析为Colors
值,然后您可以仅根据枚举执行switch
。您可以使用Enum.TryParse<TEnum>
函数:
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 :(得分:0)
您无法将a[0]
与enum
进行比较,因为它们属于不同类型。
如果您想将string
与string
描述进行比较,则需要先将其转换为字符串:
enum
您不能使用public void ColorInfo(string colorName)
{
if (Colors.red.ToString() == colorName)
Debug.Print("red color");
}
语句进行字符串转换,因为每个switch
必须是常量而case
不是。
另一种方法是先将字符串转换为Colors.red.ToString()
,然后再转换为enum
语句进行比较。
switch