比Switch case 更高效的方法:字典(Dictionary) + 委托(delegate)

来源:互联网 发布:js判断是否获取到元素 编辑:程序博客网 时间:2024/06/06 07:44

Hello,我是KitStar


以下文章整理的不对。还请见谅

以下代码书写于Unity3D中。


      众所周知,在C#中。一条switch语句允许测试一个变量在等于多个值的时的情况。每一个值作为一个case,去判断,当条件达成则执行。    并且,被测试的变量会对每一个case进行检查,直至找到符合条件的。         由于它是以遍历的方式一个个对比。当数据小的时候影响不大。但当数据达到一定程度的时候就会影响运算速度,特别是在网络端实时获取数据的时候。      所以,将采取一下的方式去优化代替 Switch case语句。

字典(Dictionary) + 委托(delegate)

 首先大家都知道字典(Dictionary)有着以健(Key):值(Value)成对的存储形式的数据类型。并且健必须是唯一的,而值可以是相同存在的。并且健和值的可以是任意类型存在的。   通常在访问的时候,可以采用,访问字典的健来获取它对应的值。   那么它的值是一个方法呢?我们是不是只要在获取的时候输入相应的健,就可以使用对应的方式。而不需要,一一去遍历去对比。那么同时也用到了委托。 逻辑就是这样,具体的实现过程不多说了。文采有限,唉,么文化,不知道怎么组织语言。所有,剩下的大家就看代码吧挺简单的。

using System.Collections;using System.Collections.Generic;using UnityEngine;public class lambdaTest : MonoBehaviour { //定义委托类 delegate float Operator(float number1,float number2);  //定义字典 Dictionary<char,Operator> dict = new Dictionary<char, Operator>();  void Start ()  {     //初始一个类型为Operator的加方法     Operator Jia = (x, y ) =>      {       return x + y;      };  //还可以给Jia方法附加绑定其他方法  Jia += jia;      Operator jian = (x, y ) =>       {       return x - y;       };      Operator cheng = (x, y ) =>       {       return x * y;       };      Operator chu = (x, y ) =>       {       return x / y;       };  dict.Add('+',Jia);  dict.Add ('-',jian);  dict.Add ('*', cheng);  dict.Add('/',chu);  //这块就是调用时候了。直接通过字典中的‘+’健,访问到它对应的值。也就是Jia方法。  Debug.Log (dict['+'](3,5));  } float jia(float a,float b)  {  Debug.Log ("a :" + a + "b :" + b);  return a+b;  }}
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 别的家长动手打自己的孩子怎么办? 一岁3个月宝宝骨龄偏小怎么办 宝宝9个月了越来越粘人怎么办? 孩子突然说话结巴口吃了怎么办啊 很久不说话了不敢说话了怎么办 宝宝2岁了还不会说话怎么办 2岁的宝宝还不会说话怎么办 小宝宝有四个月了母乳不够吃怎么办 一个月的宝宝吐奶厉害怎么办 新生儿吐奶吐一次吐的特别多怎么办 把孩子打了一次现在说话结巴怎么办 宝宝五岁了口吃越来越严重了怎么办 幼儿把自己的舌头扣破皮了怎么办 6岁宝贝烧到39度怎么办 2岁半的宝宝说话结巴怎么办 2周3宝宝不会说话胆小怎么办 宝宝我2岁多了说话有点结巴怎么办 两岁宝宝说话突然结巴了怎么办 两岁3宝宝叫她名字不理人怎么办 九个月的宝宝身高不达标怎么办 3岁宝宝又吐又拉怎么办 宝宝发烧39度怎么办手脚很烫 两岁宝宝吃什么吐什么怎么办 7岁宝宝吃多了吐怎么办 7个月的宝宝大便干燥怎么办 10个月宝宝便秘大便干燥怎么办 一岁半宝宝老是拉糊糊状大便怎么办 外阴部长了一个疙瘩有点痒怎么办 小孩打架被另一个小孩家人告怎么办 德保豆浆机有电但不工作怎么办 刚买的笔记本c盘不足怎么办 qq糖粘在喉咙气管里怎么办 穿上旗袍后感觉后腰处不平整怎么办 机打票给客人给错联怎么办?急 ps修证件照感觉不太立体怎么办 手机百度上下载的文档打不开怎么办 5岁宝宝乘飞机没带证件怎么办 网上订飞机票忘记订儿童票了怎么办 两岁宝宝对牛奶鸡蛋过敏了怎么办 两岁宝宝坐不住好跑怎么办 宝宝两岁多了不愿意坐小马桶怎么办