重用switch语句逻辑

zac*_*ary 3 c# switch-statement

重用交换机逻辑的最佳方法是什么?我有这个switch语句一直出现在我的代码中.而不是复制粘贴它我想创建一个调用其他委托并将这些委托作为参数传递的函数.

或者,还有更好的方法?

功能1:

switch (test)
        {
            case "x":
                DoSomethingX();
                break;
            case "y":
                DoSomethingY();
                break;
            case "z":
                DoSomethingZ();
                break;
        }
Run Code Online (Sandbox Code Playgroud)

功能2:

switch (test)
    {
        case "x":
            DoSomethingXxxx();
            break;
        case "y":
            DoSomethingYyyy();
            break;
        case "z":
            DoSomethingZyyy();
            break;
    }
Run Code Online (Sandbox Code Playgroud)

Sam*_*ijo 9

您也可以使用Dictionary(或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]();
    }
}
Run Code Online (Sandbox Code Playgroud)

在这里用类似的例子回答了类似的问题.

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