gpt4 book ai didi

java - 如何在 C# 或 Java 中找到每个 Switch Case 项的值?

转载 作者:行者123 更新时间:2023-11-30 08:13:09 25 4
gpt4 key购买 nike

比如说我有这个:

string myString = "hello";

switch (myString) {
case "hello":
break;
case "goodbye":
break;
}

现在我想要一个方法或一段代码,它将检索声明的每个案例的值。

例如,我想输出“hello”和“goodbye”,有没有办法获取这些值?

我正在寻找这样的东西(假设):

foreach (case in switch(myString)){
System.out.println("")
}

//我希望输出如下所示:

System.out.println("hello")
System.out.println("goodbye")

作为 foreach 循环的结果。这样的事情可能吗?

谢谢

最佳答案

在 C# 中(Java 的答案可能完全不同......恕我直言,使用这两个标签是不好的形式):

没有实际的方法可以做你想做的事。您必须重新实现 dotPeek 或 Reflector 的功能,获取该方法的 IL 并反编译它以恢复 switch 语句案例。

但是请注意,switch 语句可以实现为基于字典的委托(delegate)分派(dispatch)。如果这样做,那么您只需枚举字典的键即可。

例如:

Dictionary<string, Action> switchStatement = new Dictionary<string, Action>
{
{ "hello", (Action)MyHelloAction },
{ "goodbye", (Action)MyGoodbyeAction },
};

void MyHelloAction() { /* ... */ }
void MyGoodbyeAction() { /* ... */ }

然后你可以简单地执行以下操作:

foreach (string switchCase in switchStatement.Keys)
{
Console.WriteLine(switchCase);
}

实际上使用 switchStatement 看起来像:

string myString = "hello";

switchStatement[myString]();

关于java - 如何在 C# 或 Java 中找到每个 Switch Case 项的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30067369/

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