gpt4 book ai didi

c# - 重用 switch 语句逻辑

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

重用开关逻辑的最佳方式是什么。我的代码中不断出现这个 switch 语句。与其复制粘贴,不如创建一个调用其他委托(delegate)并将这些委托(delegate)作为参数传入的函数。

或者有更好的方法吗?

函数一:

switch (test)
{
case "x":
DoSomethingX();
break;
case "y":
DoSomethingY();
break;
case "z":
DoSomethingZ();
break;
}

功能二:

switch (test)
{
case "x":
DoSomethingXxxx();
break;
case "y":
DoSomethingYyyy();
break;
case "z":
DoSomethingZyyy();
break;
}

最佳答案

您还可以有一个字典(或 Func 而不是 Action)或类似的东西(考虑到您的函数具有类似的签名)。然后你可以不使用开关,而是使用类似的东西:

public class MyClass
{
Dictionary<string, Action> myDictionary;

public MyClass()
{
BuildMyDictionary();
}

private Dictionary<int, Action<int, int>> BuildMyDictionary()
{
myDictionary.Add("x", DoSomethingX);
myDictionary.Add("y", DoSomethingY);
myDictionary.Add("z", DoSomethingZ);
myDictionary.Add("w", DoSomethingW);
}


public void DoStuff()
{
string whatever = "x"; //Get it from wherever
//instead of switch
myDictionary[t]();
}
}

我回答过类似的问题here有一个类似的例子。

此外,尝试在 switch 语句中使用枚举而不是字符串。

关于c# - 重用 switch 语句逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1126864/

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