最新要闻
- 速度飞起!全球首款232层闪存SSD细节公布:TLC颗粒、拒绝PCIe 5.0
- 快资讯:一图看懂moto新机:二代骁龙8 3699元!价格屠夫简直了
- 天天热议:微软2025年目标:确保非洲再增加1亿人访问互联网
- 焦点信息:火球坠入浙江 警方带走疑似陨石碎片:现场砸出六七厘米深坑
- 环球观热点:不调好不上市 moto X40驯服二代骁龙8:1小时王者温度仅42度
- Nature年度十大人物出炉:猪心移植手术团队负责人等入选
- 饱满如水滴!联想moto X40开箱图赏
- 5000mAh大电池+120Hz屏 899元联想moto G53图赏
- 109度大电池能跑730KM!岚图追光预售:32.29万元起
- 视焦点讯!努比亚Z50散热堆料离谱:散热总面积达到36462m㎡
- 中国光纤之父赵梓森逝世 享年91岁:拉出了我国第一根光纤
- 世界观热点:苹果妥协了!将开门迎接第三方应用商店 用户褒贬不一
- 杭州疑似有陨石掉落:一团火球 照亮夜空
- 《隐秘的角落》游戏来了:Steam版定档明年1月18日
- 【时快讯】可以薅羊毛了!网易云音乐TV版正式上线:免费送3个月会员
- 天天快报!男子花12万买世界杯彩票没中要求退款 理由气煞店老板
广告
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
焦点热讯:替代if esle 的高级方法
【资料图】
if else 是入门最常遇到的一种结构,这种结构简单易懂,深受初学者喜爱。但是 If-Else通常是一个糟糕的选择。它的可读性差,如果用的太多,会导致结构重构困难。今天我就介绍替代 If-Else的方法。一、字典重构,完全不用If-Else下面是我们最常见的 If-Else实现string type = "B"; if (type=="A") { Console.WriteLine("执行A"); } else if (type=="B") { Console.WriteLine("执行B"); } else if(type=="C") { Console.WriteLine("执行C"); }可能很多人会喜欢这种方式,可是对于拓展来说,体验并不好。后面如果再增加操作的话,可以考虑重构成字典。 DictionaryActionDao = new Dictionary (); ActionDao.Add("A", () => { Console.WriteLine("执行A"); }); ActionDao.Add("B", () => { Console.WriteLine("执行B"); }); ActionDao.Add("C", () => { Console.WriteLine("执行C"); }); ActionDao[type].Invoke();我们把ifelse 重构成Key-Value的模式,执行Action完成需要处理的事情。这种拓展大大的方便阅读和拓展的需要。二、策略模式,完全不用If-Else除了这个,我们还可以使用策略模式去实现。不过,策略模式的代码会比较复杂。1、首先我们需要抽象一个方法出来 public interface IToDao { string Show(string val); }2、实现接口 public class AToDao : IToDao { public string Show(string val) { Console.WriteLine(val); return val; } } public class BToDao : IToDao { public string Show(string val) { Console.WriteLine(val); return val; } } public class CToDao : IToDao { public string Show(string val) { Console.WriteLine(val); return val; } }3、创建一个特性,这个特性的目的是获取标记实现了抽象接口的实例化 public class DisPlayAttribute:System.Attribute { public string Name; public DisPlayAttribute(string name) { Name=name; } public string DisPlayShow() { return Name; } }4、然后我们给实现了接口的类都加上特性 [DisPlayAttribute("AToDao")] public class AToDao : IToDao { public string Show(string val) { Console.WriteLine("策略模式执行A:"+val); return val; } } [DisPlayAttribute("BToDao")] public class BToDao : IToDao { public string Show(string val) { Console.WriteLine("策略模式执行B:"+val); return val; } } [DisPlayAttribute("CToDao")] public class CToDao : IToDao { public string Show(string val) { Console.WriteLine("策略模式执行C:"+val); return val; } }5、接下来我们就可以通过特性获取到对应的类进行实例化,调用接口方法了,代码如下: private void ShowMsg(string intype) { Dictionary keyValuePairs= Assembly.GetEntryAssembly() .GetExportedTypes()//获取全部的type .Where(ty=>ty.GetInterfaces().Contains(typeof( IToDao)))//获取 继承了 IToDao 类 .ToDictionary(ty=>ty.GetCustomAttribute ().DisPlayShow());//获取 继承了 IToDao 类 通过特性获取类名称 Type type= keyValuePairs[intype];//获取 type //Type type = Type.GetType(assemblyName + "." + intype); // 创建类型的一个实例 IToDao toDao = Activator.CreateInstance(type) as IToDao;//获取 type 实例化接口 if (toDao != null) { toDao.Show(intype); } }总结:简单的逻辑使用IFELSE不影响,但是如果后面还需要拓展,可以使用更高级的写法!字典模式相对简单,也比较容易读懂。我自己也比较喜欢。策略模式优势是拓展性好,但是代码阅读起来会比较困难。因为不知道是哪个地方实现的。可以根据需求,选择不同的实现方式。参考文档:https://learn.microsoft.com/zh-cn/dotnet/csharp/programming-guide/concepts/attributes/accessing-attributes-by-using-reflection
-
FreeSWITCH学习笔记:应用程序(APP)
本文更新于2022-12-15,使用FreeSWITCH1 10 7。官方文档见:https: freeswitch org confluence display FREESWITCH mod_
来源: 焦点热讯:替代if esle 的高级方法
make学习
天天热门:高手必备10大难题:Mysql如何实现RR级隔离时,不会幻读?
FreeSWITCH学习笔记:应用程序(APP)
速度飞起!全球首款232层闪存SSD细节公布:TLC颗粒、拒绝PCIe 5.0
快资讯:一图看懂moto新机:二代骁龙8 3699元!价格屠夫简直了
全球观察:7-2 案例 字符串关键字的散列映射
天天热议:微软2025年目标:确保非洲再增加1亿人访问互联网
焦点信息:火球坠入浙江 警方带走疑似陨石碎片:现场砸出六七厘米深坑
环球微头条丨初始Docker
热点评!分智慧果 - 2021算法与数据结构实验题
环球观热点:不调好不上市 moto X40驯服二代骁龙8:1小时王者温度仅42度
Nature年度十大人物出炉:猪心移植手术团队负责人等入选
饱满如水滴!联想moto X40开箱图赏
5000mAh大电池+120Hz屏 899元联想moto G53图赏
109度大电池能跑730KM!岚图追光预售:32.29万元起
天天微动态丨自研分布式高性能RPC框架及服务注册中心ApiRegistry实践笔记【原创】【开源】
【独家】图形用户界面(GUI)编程可以学习C++ Builder,多图、实例、书籍
17 Java内存模型与线程_Java与线程
视焦点讯!努比亚Z50散热堆料离谱:散热总面积达到36462m㎡
中国光纤之父赵梓森逝世 享年91岁:拉出了我国第一根光纤
世界观热点:苹果妥协了!将开门迎接第三方应用商店 用户褒贬不一
杭州疑似有陨石掉落:一团火球 照亮夜空
环球要闻:AIRIOT答疑第2期|如何使用物联网平台的数据采集与控制引擎?
《隐秘的角落》游戏来了:Steam版定档明年1月18日
【时快讯】可以薅羊毛了!网易云音乐TV版正式上线:免费送3个月会员
天天快报!男子花12万买世界杯彩票没中要求退款 理由气煞店老板
天天热头条丨微信全新朋友圈点赞互动广告上线:点下就能放烟花秀
天天热资讯!下单15分钟送到:上海开通首条美团无人机常态化航线
世界速读:BaseDet: 走过开发的弯路
今日热门!引迈信息荣登「2022低代码企业50强」:JNPF,你的不二选择!
环球关注:IMDb 8.2分!《阿凡达2》口碑爆棚 影院回应票价高:消费者不缺钱缺服务
OPPO Find N2 Flip外屏惊艳:支持快捷回复、锁屏小游戏
第二家通吃NVIDIA、AMD、Intel的显卡品牌诞生!这也太贵了
天天实时:公牛发布航天级品质超薄插座:可承受2万次拔插
环球微头条丨跌破零下40度!内蒙古出现极寒冰雾天气:冷到“冒白烟”
环球微速讯:SQL的使用总结
天天快资讯:WPF深入简出(一)入门必看
观热点:【机器学习】李宏毅——浅谈机器学习原理+鱼与熊掌兼得的深度学习简述
当前动态:前后端AES加密解密,CryptoJS和Java实现
热讯:记录--手把手带你开发一个uni-app日历插件(并发布)
OPPO Find N成为全国销量第二折叠屏!一经发布就大获成功
微速讯:首次使用钛合金螺丝!OPPO Find N2仅233g:折叠屏比iPhone还轻
OPPO Find N2内外一致好屏:双120Hz+双E6 可自由悬停
让玩家心动的定制 ROG 6游戏手机《暗黑破坏神:不朽》典藏限量版图赏
OPPO Find N2 233g比直板机还轻!央视点赞:刷新折叠屏手机新纪录
【世界速看料】LeetCode HOT 100:旋转图像
环球头条:特斯拉中国上线490元酒杯 限量卖 网友吐槽智商税
世界今日讯!女子连吃5天感冒药 多脏器功能衰竭:专家提醒小心这些症状
IT工程师哪里工资最高?美国仅排第二 第一收入超过70万
天天看热讯:帧数暴涨40%!《巫师3》次时代版画质优化指南
20万级大杀器 长安深蓝首款SUV曝光:增程、纯电全都有
【天天速看料】Shell 标准输入和输出
信息:公司新来一个同事,把网关系统设计的炉火纯青!(万能通用,稳的一批。。)
当前视讯!易基因|NSUN2介导RNA m5C修饰促进食管鳞状细胞癌进展的表观调控机制 | 肿瘤研究
ThingsBoard前端项目的安装与启动
【时快讯】RELIC库学习
全球看热讯:喜讯+1!袋鼠云数栈技术团队获“2022年度优秀开源技术团队”
投影仪的工作原理是什么?投影仪排名前十的品牌
Centos安装Nginx
针孔无线摄像机怎么连接?针孔无线摄像机怎么用?
本地连接受限制或无连接是怎么回事?本地连接受限制或无连接怎么解决?
svchost.exe占用cpu过是什么原因?svchost.exe占用cpu过高解决方法
pdf文件打开是乱码怎么回事?pdf文件打开是乱码时该怎么办?
男主角是明星的小说有哪些?男主角是明星的小说推荐
科比最后一场比赛是什么时候?科比最后一场比赛是多少分?
鞋子防臭的小妙招有哪些?鞋子防臭喷雾哪个牌子好?
沙棘如何鉴别好坏?沙棘的功效作用与主治是什么?
玉碎了代表什么征兆?玉碎了有什么办法修复吗?
英雄联盟更新慢是什么原因?英雄联盟更新慢怎么办?
怎么才能加快迅雷的下载速度?加快迅雷下载速度的方法有哪些?
全球讯息:阻止Windows未知应用弹窗的一种思路方法
Zabbix6.0使用教程 (四)—zabbix6.0从源代码安装
Tomcat工作原理
小键盘指法是什么意思?小键盘指法包括什么键?
iphone13如何添加公交卡?iphone13添加公交卡的方法有哪些?
安卓系统的手机有哪些?安卓系统的手机有哪些牌子好?
天天快讯:针对某钓鱼网站的渗透测试
【脚本项目源码】Python制作桌面宠物,这么可爱的萌宠你不想拥有吗?
今日热议:4999元 小米13限量定制色明天首销:只有5万台
环球焦点!中国民营火箭朱雀二号发射失利 全球首型轨道飞行的甲烷火箭
当前播报:QQ邮箱推实用新功能:英文文档一键即可翻译
【报资讯】丰田凯美瑞看呆!新一代本田雅阁实车曝光:比思域还运动
撞到快报废!特斯拉高速追尾大货车 司机身亡:现场视频速度快到可怕
单手就能用的折叠屏旗舰!OPPO Find N2今天发布:比直板机还轻
环球视讯!反对无效!日本投放广告宣传福岛核污水安全性:必须排海
【环球播资讯】我国成功发射遥感三十六号卫星!长征火箭年发射数首次迈上50大关
【环球速看料】适合男女双打 这三款游戏拉近你和她的距离
焦点滚动:腾讯互动阅读App《一零零一》宣布将停运:补偿方案出炉
环球新动态:显卡不会便宜了?NV要发新RTX 4080、4090:移动版也万元节奏
世界新消息丨法国2-0摩洛哥 决赛战阿根廷!网友发现规律:姆巴佩进球就不会输
快消息!Vue核心概念与其指令
Wireshark使用笔记
焦点!Zabbix监控系统
世界快资讯丨Kubernetes Volumes 笔记
取代奔腾/赛扬!Intel 12代Alder Lake-N处理器来了:清一色小核、超低功耗
环球即时看!德国樱桃收购瑞典外设品牌Xtrfy:对方只有12人
当前信息:国六B汽油要全面上线了!听说这玩意又贵又不耐烧?
环球关注:Wi-Fi 7:明年下半年见
天天看点:App流畅度提升88%!小米承诺:所有升级MIUI 14机型均支持光子引擎