gpt4 book ai didi

c# - 在 switch 语句中使用字符串集合

转载 作者:可可西里 更新时间:2023-11-01 08:30:31 25 4
gpt4 key购买 nike

我正在尝试为这个问题找到解决方案。这是我的示例代码:

class Program
{
private string Command;

private static string[] Commands = { "ComandOne", "CommandTwo", "CommandThree", "CommandFour" };


static void Main(string[] args)
{
Command = args[0];
switch(Command)
{
case Commands[0]: //do something
break;
case Commands[1]: //do something else
break;
case Commands[2]: //do something totally different
break;
case Commands[3]: //do something boring
break;
default: //do your default stuff
break;
}
}

void DifferentMethod()
{
foreach(string c in Commands)
{
//do something funny
}
}
}

此代码不起作用,因为开关中的字符串值不是常量。我想编写易于维护的代码。
我喜欢使用数组之类的东西,因为我需要在循环中的其他地方使用相同的值。
使用 int-values 枚举将是完美的,但我没有找到一个小的解决方案来解决与字符串相同的问题。

最佳答案

Commands 转换为枚举:

enum Commands { ComandOne, CommandTwo, CommandThree, CommandFour }

Switch 语句应该如下所示:

static void Main(string[] args)
{
Command = (Commands)Enum.Parse(typeof(Commands), args[0]);
switch(Command)
{
case Commands.CommandOne:
//do something
break;
case Commands.CommandTwo:
//do something else
break;
...
default:
// default stuff
}
}

最后一个方法应该是这样的:

void DifferentMethod()
{
foreach(var c in Enum.GetValues(typeof(Commands)))
{
string s = c.ToString();
//do something funny
}
}

关于c# - 在 switch 语句中使用字符串集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3839978/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com