告诉 Resharper 一个 lambda 参数不为空

Posted

技术标签:

【中文标题】告诉 Resharper 一个 lambda 参数不为空【英文标题】:Tell Resharper that a lambda argument is not null 【发布时间】:2015-02-11 11:36:33 【问题描述】:

我有这样的方法:

void Foo(object x, Action<object> f) 
    if (x != null)
        f (x);

我想这样使用它:

void Bar () 
    Foo ("baz", g => g.ToString());
    Foo (null, g => g.ToString());

但 Resharper 抱怨 lambda 中的 g 可能为空。是否可以注释方法告诉 Resharper g 永远不会为空?

【问题讨论】:

我没有收到来自 Resharper 的警告。我必须把它关掉,因为它会很烦人。我会看看我是否能弄清楚哪个设置可以处理这个问题。 您必须启用悲观检查器 我也没有收到任何警告,我没有关闭任何东西 @Aswartha 您必须明确启用更严格的空值检查 现在有一个功能请求:youtrack.jetbrains.com/issue/RSRP-429178 【参考方案1】:

使用 ReSharper,当您处于可以改进的行时,代码编辑器的左侧应该会出现一个黄色灯泡,如果您单击它,会有一个“Inspection:...”选项,请单击它,然后点击Disable once with comment,评论如下:

// ReSharper 禁用一次 ...

应该出现在该行之前。您可以找到具体说明“它不会为空”的艰难方法,或者只是让它忽略问题。我希望它有所帮助。

编辑:我想说我使用的是许可 ReSharper 9,只是为了指定。

【讨论】:

以上是关于告诉 Resharper 一个 lambda 参数不为空的主要内容,如果未能解决你的问题,请参考以下文章

如何防止 Resharper 大量缩进 lambda?

ReSharper 为 lambda 表达式中的变量名提供“@”前缀

如何让 ReSharper 停止在 cshtml 中展开我的 lambda?

告诉resharper一个Func 永远不会返回null

为啥 ReSharper 告诉我“隐式捕获的闭包”?

lambda 表达式中的 C# 切换