用C#来做开发的朋友们,对于Dictionary肯定不陌生,但是能把它用好也是不容易的。下面分享一段关于Dictionary的代码样例(根据实际项目代码改编),看看大家能不能看出点儿问题来,在评论里分享下。
Dictionary的奇葩用法
这段代码的意思是根据Key:xxxKey从入参data中查找相应的Value,然后根据Value再从字典数据里查找到相应的Name,然后拿着Name去查询数据。
业务逻辑上没有啥大的问题,但是对字典的取值写法还真是头一次见[捂脸]1.从字典中获取值
FirstOrDefault从字典中取值--不推荐
这里使用了FirstOrDefault方法,如果找到了指定Key的项目则返回该项目,否则返回一个空的KeyValuePair对象(由于KeyValuePair是值类型,这里不会为Null),所以有了后面的判空逻辑
判空的奇葩代码---罕见
业务逻辑上没有错,但是用Equals去判断一个值类型的KeyValuePair是否为空的写法还真是头一次见,看上去总是觉得有点怪怪的[震惊]
通常做法是使用TryGetValue这个方法从字典中取值,然后判定值是否为空[灵光一闪]
通常用法:TryGetValue从字典中取值
2.Null引用问题
mapper为null时,这里会引发NullReferenceExcepiton
如果入参mapper为null,这里会引发NullReferenceExcepiton,判空这种最容易被忽略,也往往最容易引发bug,大家要养成判空的好习惯啊[大笑]3.不必要的类型转换
入参mapper应声明为IDictionary
s => s.Code == data.Value.ToString()说明Code属性是string类型的,那么我们在构造入参mapper时,就可以声明为IDictionary
基于以上3个问题,重写后的代码如下
基于以上3个问题,重写后的代码
so,我们在写代码的时候,一定要多思考,往往一些不起眼的小细节是最容易被忽略也是最容易出错的地方。好的编码习惯是慢慢养成的,相反坏习惯也是如此。愿大家都能养成一个良好的编码习惯。
好了,今天的分享就到这里,如果您有不同的看法请在评论区里讨论哟[赞]
版权声明:本文基于CC协议,以分享为目的,转载于今日头条,版权归原作者,如侵权请联系我们删除,内容仅供参考,不代表本站建议!