dictionary append,dictionary()

考研资讯2023-11-09 08:15:2951data

用C#来做开发的朋友们,对于Dictionary肯定不陌生,但是能把它用好也是不容易的。下面分享一段关于Dictionary的代码样例(根据实际项目代码改编),看看大家能不能看出点儿问题来,在评论里分享下。

Dictionary的奇葩用法

dictionary append,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类型,而不是object类型,要知道拆装箱也是很耗费资源的[流泪]总结

基于以上3个问题,重写后的代码如下

基于以上3个问题,重写后的代码

so,我们在写代码的时候,一定要多思考,往往一些不起眼的小细节是最容易被忽略也是最容易出错的地方。好的编码习惯是慢慢养成的,相反坏习惯也是如此。愿大家都能养成一个良好的编码习惯。

好了,今天的分享就到这里,如果您有不同的看法请在评论区里讨论哟[赞]

版权声明:本文基于CC协议,以分享为目的,转载于今日头条,版权归原作者,如侵权请联系我们删除,内容仅供参考,不代表本站建议!

相关推荐

猜你喜欢

考研资讯1970-01-01
考研资讯1970-01-01
考研资讯1970-01-01
考研资讯1970-01-01
考研资讯1970-01-01
考研资讯1970-01-01