AD

简述C#中as和is的区别

      在学习c#的过程中,对于as和is,我一直是感到头大,他们长得相似,读音相似,每次用到的时候,倒要到搜索引擎上温习一下他们的区别。

      今天就简单说说他们的区别:

       is需要先进行非空判断,然后再进行类型判断。is只考虑引用转换,装箱转换和取消装箱转换。不考虑其他转换(如用户定义的转换)。

       as用于将一个值显示转换为一个给定的引用类型,使用引用转换或装箱转换。如果指定的转换不可实现,则结果为null。

       is 是类型判断,不判断对象是否为null。如果一个对象是某个类型或其父类型,则返回TRUE,否着返回FALSE。如果对象引用为null,那么is总会返回FALSE。

       as稍微不同,它检查引用对象是否兼容,如果不兼容则返回null,因此需要做null的判断。as则是类型相同,就返回一个非空的引用,否则返回一个空引用。  

       is用来判断一个实例是否属于某个类

           dog d=new dog()

              if(d is dog)……

         as用于在兼容的引用类型之间执行转换,如果转换失败则返回null,它等价于:expression is type ? (type)expression : (type)null;

评论

此博客中的热门博文

简单粗暴导出小米便签

我——终于一个人了

Ubiquiti_Networks_UniFi_Cloud_Key_authed_rce