ReSharper 2025.2 Help

代码检查:安全类型转换表达式始终成功

要将引用变量从派生类型安全地转换为基类型或反之,您可以使用 as 运算符安全地意味着代码不会抛出异常,而是如果无法执行转换,您分配值的变量将被分配 null

如果类型是 兼容的 ,使用 as 进行的安全转换将始终成功,因此在这种情况下显式转换就足够了,因为 冗余转换可能会降低性能。

如果基类型到派生类型的转换已经检查了与派生类型的兼容性,那么这种转换可能是多余的。 在下面的示例中,只有当 obj 是类型 string 且不是 null 时,才能进行 string str 的赋值。 因此,我们可以使用直接转换,或者重写此代码以将转换与空值检查分开。

public void Test(object obj) { if (obj is string) { string str = obj as string; } }
public void Test(object obj) { if (obj is string) { string newStr = (string) obj; } }

当安全转换用于从基类型到派生类型的转换时,它完全没有必要(编译器无论如何都会隐式执行转换),并且可以安全地移除。

最后修改日期: 2025年 9月 27日