加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 重用switch语句逻辑

发布时间:2020-12-16 00:11:42 所属栏目:百科 来源:网络整理
导读:重用交换机逻辑的最佳方法是什么?我有这个switch语句一直出现在我的代码中.而不是复制粘贴它我想创建一个调用其他委托并将这些委托作为参数传递的函数. 或者,还有更好的方法? 功能1: switch (test) { case "x": DoSomethingX(); break; case "y": DoSomet
重用交换机逻辑的最佳方法是什么?我有这个switch语句一直出现在我的代码中.而不是复制粘贴它我想创建一个调用其他委托并将这些委托作为参数传递的函数.

或者,还有更好的方法?

功能1:

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

功能2:

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

解决方法

您也可以使用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]();
    }
}

我用类似的例子回答了类似的问题here.

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读