可能重复:
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更具可读性和简洁性,但我想知道是否存在任何性能损失或行为差异,我不知道。
答案 0 :(得分:-3)
要检查某个对象是否属于某个类,操作符'is'就是一切。
if (object is ClassName)
{ }
如果是,则返回flat,如果为null或trully,则返回false。