代码检查:安全类型转换表达式始终成功
要将引用变量从派生类型安全地转换为基类型或反之,您可以使用 as 运算符。 安全地意味着代码不会抛出异常,而是如果无法执行转换,您分配值的变量将被分配为 null。
如果类型是 兼容的 ,使用 作为 的安全转换将始终成功,因此在这种情况下显式转换就足够了,因为 冗余转换可能会降低性能。
如果基类型到派生类型的转换已经检查了与派生类型的兼容性,那么这种转换可能是多余的。 在下面的示例中,只有当 obj 是 字符串 类型且不是 null 时,才能进行 字符串 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月 26日