gpt4 book ai didi

c# - 尽管有 ReSharper [NotNull] 注释,我是否应该添加显式空检查?

转载 作者:太空狗 更新时间:2023-10-29 23:36:16 26 4
gpt4 key购买 nike

我正在使用这样的 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com