代码检查:'is' 运算符的给定表达式始终为提供的类型
在引用类型之间的兼容性检查中 expr 是 type ,左侧的 expr 可能是可分配给右侧的 类型 的类型。
根据 C# 文档, “如果 expr 非空且通过计算表达式得到的对象可以转换为类型,则 is 语句为 true;否则返回 false。”
换句话说,此检查可能评估为 false 的唯一情况是 expr 为 null 时。
为了揭示此情况下检查的实际语义,我们应将 是 检查替换为简单的空值检查。
此警告类似于编译器警告 CS0183:给定表达式始终为提供的('type')类型 (JetBrains Rider 也会检测到),但它处理的是引用类型,而编译器警告发生在值类型转换时。
private void Test(String str)
{
if (str is Object)
{
// do something
}
}
private void Test(String str)
{
if (str != null)
{
// do something
}
}
最后修改日期: 2025年 9月 26日