检查类型时,使用“as”和“as”或只是“as”和null检查更好吗?

时间:2012-04-03 17:39:52

标签: c# operators

  

可能重复:
  Casting vs using the 'as' keyword in the CLR
  Cast then check or check then cast?

假设以下代码设置:

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

现在,我有一个名为BaseFoo的{​​{1}}对象,实际上可能属于foo,也可能不属于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更具可读性和简洁性,但我想知道是否存在任何性能损失或行为差异,我不知道。

1 个答案:

答案 0 :(得分:-3)

要检查某个对象是否属于某个类,操作符'is'就是一切。

if (object is ClassName)
{ }

如果是,则返回flat,如果为null或trully,则返回false。