试图了解 ReSharper 发出的特定“表达式总是错误的”警告

问题描述

我偶然发现了 ReSharper(在 Rider 中)的一个特定的“总是错误的”警告,我最初认为这是不正确的,但是从我通常从其他人那里收集到的信息来看,如果发生这种情况,ReSharper 比程序员更聪明,所以我正在尝试了解和学习,也许有人可以帮助我。

我在一个孤立的空类中重现了这种情况:

private void Method(object obj)
{
    if (obj == null)
        return;
    var action = new Action(() =>
    {
        if (obj == null) // this condition is marked as always false
            return;
        // do stuff
    });
    // save reference to action somewhere
}

在这里的思考过程是,我不知道 action 何时可能被调用,虽然 obj 在创建 action 时不能为 null,但它很可能是调用。 ReSharper 似乎有不同的想法。

语言版本为 C# 9.0,可空引用类型禁用

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)