前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >2019-3-8-resharper喊你回家判空啦

2019-3-8-resharper喊你回家判空啦

作者头像
黄腾霄
发布2020-06-10 11:56:41
4730
发布2020-06-10 11:56:41
举报
文章被收录于专栏:黄腾霄的博客

NullReferenceException一定是大多数程序员最讨厌的异常之一


我们在书写代码时看到NullReferenceException一定很崩溃,但是更崩溃的事情是在团队协作时,小伙伴写的方法给你返回了一个Null

本着己所不欲勿施于人的观点,我们应该选择一种方式或者契约让可能会出现Null的地方,告知到其他的小伙伴

这里推荐的是Resharper的CanBeNull标记。

CanBeNull可以标记在方法的参数或者返回值,使用后可以看到在可能出现空引用的地方vs给出了波浪线提示

还有一种相对来说少见一些的情况是对于Task<T>中对T可能为空的标记

如果我们采用之前的CanBeNull标记,会发现vs提示在await Foo 处出现提示,即Task 可能会null

而不是我们期望的string 为null

此时只要将原有的CanBeNull改为ItemCanBeNull即可

ItemCanBeNull可以表示IEnumerableTask或者Lazy所包含的对象类型可能为空,例如List<T>,Task<T>Lazy<T>中的T

那么既然可以表示可空,是否有标记表示非空呢?

只要使用NotNullItemNotNull即可表示对应的非空情况

参考链接:

[Code Annotation Attributes - Help

ReSharper](https://www.jetbrains.com/help/resharper/Reference__Code_Annotation_Attributes.html)


本文会经常更新,请阅读原文: https://xinyuehtx.github.io/post/resharper%E5%96%8A%E4%BD%A0%E5%9B%9E%E5%AE%B6%E5%88%A4%E7%A9%BA%E5%95%A6.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。

本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名黄腾霄(包含链接: https://xinyuehtx.github.io ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-03-08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档