is/as操作符(类型转换)
// is的使用,以下代码中CLR检查了两次对象类型
public void p() { Object o = new Object(); if(o is Employee) //CLR核实o是否兼容于Employee类型 { Employee e = (Employee)o; //CLR再次核实o是否引用一个Employee } }
// as的使用(会返回空,要判断),只进行了一次类型检查,提升性能
public void p()
{
Object o = new Object();
Employee e = o as Employee; //CLR核实o是否兼容于Employee类型
if(e != null) //检查e是否为空(检查为空的速度比校验对象类型快得多)
{
//在if语句中使用e
}
}
结论:使用as可以提升性能(相较于is)
---以上摘自书籍《CLR via C#》Jeffrey Richter-第四章类型基础-4.2类型转换

浙公网安备 33010602011771号