Skip to content

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

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

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

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

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

1552965430799

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

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

而不是我们期望的string 为null

1552965722950

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

1552977188690

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

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

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

参考链接:

最后更新于:

基于 VitePress + @sugarat/theme 构建