Resharper NotNull属性是否适用于扩展方法?

时间:2017-04-06 10:16:47

标签: c# annotations resharper extension-methods notnull

我们正在使用扩展方法,例如,如果列表为null则返回一个空列表来清理代码。下面是一个简化的例子。

遗憾的是,该方法仍然是来自Resharper的警告。使用NotNull属性在大多数情况下都有效,但在将该方法用作扩展方法时则不行。

Code Example. Image to include the squiggly lines from resharper.

我附上了截图,以显示波浪线。注意蓝色波浪线。请注意NotNull属性如何在未将方法作为扩展方法调用时执行它应该执行的操作,但在使用该方法时则不会。显然,我们希望能够将该方法称为扩展方法。

这不可能吗?我们可以使用其他一些属性吗?

(绿色波浪线抱怨我们可以将该方法称为扩展方法。)

1 个答案:

答案 0 :(得分:2)

这是因为你使用了? (null-conditional) operator,它没有链 - 如果输入为空,它将使语句短路。因此,如果input为null,则list将计算为null,list.Count将抛出nullreference-exception。

您可以将整个事物包裹在括号中,例如

var list = (input?.List).EmptyIfNull();