C#中As 及Is 的用法

转贴一:

 

今天一早上网,打开MSN就看到有个CSDN的朋友发出求救信。同时也在CSDN上他发了个贴子。他问的问题是那种最基本的语法知识方面的问题。我真不明白现在的程序员连这一点常识都没有,真不知他是如何混到现在的。

他的问题是:

有这样一段代码:
GroupRadioButton selectRadioButton =
            dgItem.FindControl("selectRadioButton") as GroupRadioButton;
"as GroupRadioButton;" 是什么意思
怎么感觉是VB的写法呢
我试了试int i = 10 as int 编译居然没有错


为什么这样的代码能通过编译。在C#中,所有的东西都是对象。因此10也是一个整型对象。这里用到了as ,那as 是什么呢。他告诉我说在MSDN里找不到关于AS的帮助。说的也是,你在MSDN里的索引里找根本就没有AS的介绍,那到哪去找到帮助呢。其实你只要输入关键字就可以了。找到C#关键字,里面有关于as 及is的用法。

as 运算符类似于类型转换,所不同的是,当转换失败时,as 运算符将产生空,而不是引发异常。在形式上,这种形式的表达式:
expression as type
as 运算符只执行引用转换和装箱转换。as 运算符无法执行其他转换,如用户定义的转换,这类转换应使用 cast 表达式来代替其执行


关于is的其实也差不多,只是IS不会帮你进行任何的转换。所以需要自已进行显示转换

is 运算符用于检查对象的运行时类型是否与给定类型兼容。

那么上面的表达式应该这样写了

if(10 is int)

{

int i=(int)10;

}

 

 

转贴二:

 

在学习C#时,看到这样一种表达方式:

BAP_USER user  =  session[ " User " as  BAP_USER;
if (user  ==   null )
    
return  mapping.FindForward( " error " );

有些不明白,上网查了些资料,对AS和IS有了些了解,把资料放在这里供学习和参考:
在C#中,所有的东西都是对象。因此任何常数也是一个整型对象。这里用到了as ,as 是C#语言里面的一个关键字。as 运算符类似于类型转换,所不同的是,当转换失败时,as 运算符将产生空,而不是引发异常。在形式上,这种形式的表达式:
expression as type
as 运算符只执行引用转换和装箱转换。
as 运算符无法执行其他转换,如用户定义的转换,这类转换应使用case表达式来代替其执行
关于is的其实也差不多,只是IS不会帮你进行任何的转换。所以需要自已进行显示转换
is操作符进行转换,它自动检查时局是否和类型兼容,并返回结果。而且它不会抛出异常。如果对象引用为null,则is总返回false。

             if  (cls1  is  Class2) 
        
{
                Class2 cls2 
= (Class2)cls1;
            }

            
else
                System.Console.WriteLine(
" Error 2! " );

as操作符进行转换:

            Class2 cls2  =  cls1  as  Class2;
            
if  (cls2 != null )
               System.Console.WriteLine(
" Ok " );
            
else
               System.Console.WriteLine(
" Error! " );

      对比两种方式,is需要做两次对象的类型检查,而as需要做一次对象类型检查,再加一次null的检查,而null检查开销比对象类型检查少。相对as的方法效率高些。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值