我读《Microsoft .NET框架程序设计(修订版)》------DoItNow的读书笔记3

我读《Microsoft .NET框架程序设计(修订版)》------解然的读书笔记3

 关于类型转换中的 is和as的使用

is作为运算符出现在类型转换中的.其作用是检查对象的运行时类型是否与给定类型兼容,在这种类型兼容性判定中要进行一次类型转换. 然后根据类型的兼容性进行其他处理工作.

AS 也是一个运算符, 对某个对象进行 as操作后 分为两种情况 1.如果类型兼容 操作成功 就会返回 as后的新类型 2.如果操作失败就会返回null.

 这样就可以看出两操作符的 性能比较了.比如我原来 使用FindControl()方法 根据一个 变量名称的string 去获取这个变量时 是这么写的:

if(this.FindControl("myCheck") is System.CheckBox) //M处
{
  System.CheckBox tempCheck= (System.CheckBox)this.FindControl("myCheck");//N处
  tempCheck.Checked= true;
}

很明显以上操作在M和N处分别进行了 两次类型转换.

如果现在改成这么写

System.CheckBox tempCheck= this.FindControl("myCheck") as System.CheckBox;//L处
if(tempCheck!=null
{
  tempCheck.Checked= true;
}

现在就只是在L处 进行了一次类型转换.

类型转换在CLR中,是比较消耗性能的, 现在大家应该知道怎么办了吧.(至少我以后不会用第一中方法了)

posted on 2004-06-14 17:17  追忆似水年华  阅读(999)  评论(1)    收藏  举报

导航