ReSharper 2025.2 Help

代码检查:'is' 运算符的给定表达式始终为提供的类型

在引用类型之间的兼容性检查中 expr 是 type ,左侧的 expr 可能是可分配给右侧的 type 的类型。

根据 C# 文档“如果 expr 非空且通过计算表达式得到的对象可以转换为类型,则 is 语句为 true;否则返回 false。”

换句话说,此检查可能评估为 false 的唯一情况是 exprnull 时。

为了揭示此情况下检查的实际语义,我们应将 is 检查替换为简单的空值检查。

此警告类似于编译器警告 CS0183:给定表达式始终为提供的('type')类型 (ReSharper 也会检测到),但它处理的是引用类型,而编译器警告发生在值类型转换时。

private void Test(String str) { if (str is Object) { // do something } }
private void Test(String str) { if (str != null) { // do something } }
最后修改日期: 2025年 9月 27日