我们正在使用扩展方法,例如,如果列表为null则返回一个空列表来清理代码。下面是一个简化的例子。
遗憾的是,该方法仍然是来自Resharper的警告。使用NotNull属性在大多数情况下都有效,但在将该方法用作扩展方法时则不行。
我附上了截图,以显示波浪线。注意蓝色波浪线。请注意NotNull属性如何在未将方法作为扩展方法调用时执行它应该执行的操作,但在使用该方法时则不会。显然,我们希望能够将该方法称为扩展方法。
这不可能吗?我们可以使用其他一些属性吗?
(绿色波浪线抱怨我们可以将该方法称为扩展方法。)
答案 0 :(得分:2)
这是因为你使用了? (null-conditional) operator,它没有链 - 如果输入为空,它将使语句短路。因此,如果input为null,则list将计算为null,list.Count将抛出nullreference-exception。
您可以将整个事物包裹在括号中,例如
var list = (input?.List).EmptyIfNull();