假设我有一个对象的实例,该对象属于某个子类型的子类,该对象通过C#中的父类(super class)型的引用传递给我,我习惯于以这种类似于Java的方式进行类型转换(假定“引用”为的父类型):
if (reference is subtype){
subtype t = (subtype)reference;
}
但是最近我遇到了这样的例子:
if (reference is subtype){
subtype t = reference as subtype;
}
那两个完全相等吗?有什么区别吗?
最佳答案
它们的使用方式相同,但都不是最佳选择。您应该只进行一次类型检查:
subtype t = reference as subtype;
if (t != null) {
...
}
检查null比检查类型更有效。