在检查类型时,是否最好使用“;是“;用“;作为“;或者仅仅是“;作为“;以及空检查

本文关键字:作为 检查 或者 仅仅是 类型 是否 | 更新日期: 2023-09-27 18:29:57

可能重复:
铸造与使用';作为';CLR中的关键字
先铸造后检查还是先检查后铸造?

假设以下代码设置:

public class BaseFoo { ... }
public class DerivedFoo : BaseFoo { ... }

现在,我有一个名为fooBaseFoo对象,它实际上可能是DerivedFoo类型,也可能不是。如果它是一个DerivedFoo对象,我需要添加几个步骤来处理它

选项1:

if (foo is DerivedFoo)
{
    var dfoo = foo as DerivedFoo;
    // Continue processing...
}

选项2:

var dfoo = foo as DerivedFoo;
if (dfoo != null)
{
    // Continue processing...
}

就我个人而言,我认为选项1更具可读性和简洁性,但我想知道我是否遗漏了任何性能打击或行为差异。

在检查类型时,是否最好使用“;是“;用“;作为“;或者仅仅是“;作为“;以及空检查

要检查对象是否属于某个类,只需使用运算符"is"即可。

if (object is ClassName)
{ }

如果是,将返回纯true,如果为null或trully false则返回false。