首页 新闻 会员 周边

c# 语法疑问...

0
悬赏园豆:5 [已解决问题] 解决于 2013-03-23 19:41

object objTest = 11;

    if ( objTest is int )

    {

        int nValue = (int )objTest;

    }

 

使用is关键字。。不是关键字is前面的必须派生或是本类型才可以用嘛??难道object派生自int??

KeVinDurant的主页 KeVinDurant | 初学一级 | 园豆:5
提问于:2013-03-06 22:14
< >
分享
最佳答案
0

你的代码本身没有问题,但你说反了,所有类型都是派生自object,换 言之,object是所有类型的基类。

收获园豆:5
张占岭 | 菜鸟二级 |园豆:464 | 2013-03-06 22:22
其他回答(4)
0

is关键字只是将前面的操作符“尝试”强制转换为后面的操作符(注意是尝试)。成功返回true,失败就直接抛出异常

可以使用as关键词,此关键词直接将前面的操作符强制转换为后面的操作符(非尝试),失败返回null,不会抛出异常。

滴答的雨 | 园豆:3660 (老鸟四级) | 2013-03-06 22:29
0

Object是所有的基类,你那样定义,只是隐式转换成int类型;也可以这么写:

          object objTest = 11;
           int nValue = (int)objTest;
           Console.WriteLine(nValue);
           Console.ReadLine();

结果是:11;

经过反汇编编译后:

IL--0003处自动转换int32型.

知道为什么了吧!

伏草惟存 | 园豆:1420 (小虾三级) | 2013-03-06 22:57
0

二楼的回答我看懂了

Invictus | 园豆:76 (初学一级) | 2013-03-07 08:35
0

这里我说说is的使用 A is B(A是对象名 B是类名) 代表的意思是判断对象A是否为B类的实例,对A到底是不是没有要求,只用于判断,然后返回ture或false,也就是说你可以写任意一个类对象if(anyObject is int) 判断它是否为int.

While蹒跚学步... | 园豆:59 (初学一级) | 2013-03-12 15:29
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册