我的资源 (.resx) 文件中有一堆字符串。我试图直接将它们用作 switch 语句的一部分(请参阅下面的示例代码)。
class Test
{
static void main(string[] args)
{
string case = args[1];
switch(case)
{
case StringResources.CFG_PARAM1: // Do Something1
break;
case StringResources.CFG_PARAM2: // Do Something2
break;
case StringResources.CFG_PARAM3: // Do Something3
break;
default:
break;
}
}
}
我查看了一些解决方案,其中大多数似乎建议我需要将它们声明为 const string
我个人不喜欢。
我喜欢这个问题的最高投票解决方案:using collection of strings in a switch statement .但是我需要确保资源文件中的 enum
和 strings
绑定(bind)在一起。我想知道一种简洁的方法。
编辑:
还发现 this great answer在研究如何使用 Action
时:
最佳答案
你可以使用 Dictionary<string, Action>
.你放一个 Action
(方法的委托(delegate))为字典中的每个字符串并搜索它。
var actions = new Dictionary<string, Action> {
{ "String1", () => Method1() },
{ "String2", () => Method2() },
{ "String3", () => Method3() },
};
Action action;
if (actions.TryGetValue(myString, out action))
{
action();
}
else
{
// no action found
}
作为旁注,如果 Method1
已经是 Action
或 void Method1()
方法(没有参数也没有返回值),你可以这样做
{ "String1", (Action)Method1 },
关于c# - 将 'switch' 与资源文件中的字符串一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5097129/