作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在使用这样的 ReSharpers [NotNull]
注释:
public void MyMethod([NotNull] string a)
{
if(a == null) // Warning: Expression is always false.
{
throw new ArgumentNullException();
}
// ...
}
但是,由于 NotNull
注释,ReSharper 警告我未使用的前提条件检查,因为
expression is always false
但是,据我了解这些注释,它们只是指示参数永远不应该是null
;即它们不禁止调用者传递null
,例如如
this.MyMethod(null);
或者更不明显(更像是在真实代码中)
string foo = null;
this.MyMethod(foo);
因此,我觉得包含对 null
的先决条件检查确实有意义,但也许我遗漏了一个概念或没有正确理解它。
对带有 [NotNull]
注释的参数进行显式可空性检查是否有意义?
最佳答案
我对此进行了测试,当使用 [NotNull]
标记参数时,您基本上是在告诉该参数不应采用空字符串。传递空值时,您会收到来自 Resharper 的警告,告诉您“可能为标有 [NotNull] 属性的实体分配空值。”,但您没有收到错误,因此程序可以编译。明智的做法是在被调用的方法中防范空值。
关于c# - 尽管有 ReSharper [NotNull] 注释,我是否应该添加显式空检查?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49065396/
我是一名优秀的程序员,十分优秀!