switch...case...之替换方案一

很多时候,当switch中有N个分支,且分支数已达10+,每个分支都是一个不小的方法体,那我们是不是应该考虑换一种方式来实现这个分支。

而我目前所能想到的是会用到如下几种方法。
1.Action
2.Func
3.Attribute
4.反射

简单方案一:
使用Action,Action是一个特殊的委托类,没有返回值。
具体的代码如下:

using System;
using System.Collections.Generic;

namespace MyLofter.QuickStart
{
public class SwitchCaseActionQuickStart
{
private IDictionary<string,Action> _dictionary = new Dictionary<string, Action>();

    public SwitchCaseActionQuickStart()
    {
        _dictionary.Add("say", Say);
        _dictionary.Add("eat", Eat);
    }

    public void Execute(string actionName)
    {
        if (_dictionary.ContainsKey(actionName))
        {
            var action = _dictionary[actionName];
            action.Invoke();
        }
    }

    private void Say()
    {
        Console.WriteLine("Say something.");
    }

    private void Eat()
    {
        Console.WriteLine("eat some food.");
    }
}

}

DEMO中采用字典的KEY-VALUE形式,替换了传统的switch-case。只要我们在字典中添加了所有的switch分支,以及对应的action,那么,完整而简单的switch-case替换方案就完成了。我们只要使用如下代码,就能执行我们需要执行的action了。
var quickStart = new SwitchCaseActionQuickStart();
quickStart.Execute("eat");
quickStart.Execute("say");

转载于:https://www.cnblogs.com/mermaidLoft/p/5236343.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值