标题:好东西,好东西!!
只看楼主
houyunqing
Rank: 1
等 级:新手上路
帖 子:476
专家分:0
注 册:2005-4-1
 问题点数:0 回复次数:19 
好东西,好东西!!
有些情况下,我们对某些object的来历并不是很清楚,也就不能够肯定它的类型,如果草草对其进行强制转换,一旦类型错误就会导致异常,这里就教大家一招:判断object的类型(事实上是判断object可以转换成的类型)
例:
    object ob = 0;
    if(ob is int)//使用is判断ob是否可以转换成整数类型,因为ob是从整数0来的,
                 //所以会返回一个true
    {
       Console.WriteLine("ob可以转换为整数:{0}",(int)ob);
    }
    else
    {
       Console.WriteLine("ob不可以转换成整数");
    }
    //这段代码将输出:ob可以转换为整数:0
现在接上一段代码:
    if(ob is long)//判断ob是否可以转换成long类型
    {
        Console.WriteLine("ob可以转换成long:{0}",(long)ob);
    }
    else
    {
        Console.WriteLine("ob不可以转换成long");
    }
    //因为int和long之间本来就是可以转换的,所以将输出:ob可以转换成long:0
    //同样,你对它进行判断是否可以转换成byte等数字类型,所得到的结果都是true
现在,你应该了解如何使用is了吧?

     变量 is 类型

"变量"就是你要进行判断的变量,"is"是判断的关键字,"类型"是你要判断变量是否为这个类型,这个判断式将返回true(可以转换)或者false(不能转换)


使用as关键字进行转换动作:
as的性质比较特殊,如果你将以各变量从类型a转换到类型b,只要你使用了as关键字,如果可以转换,它当然会返回一个正确的类型,但是如果不可以转换,它则会返回一个null替代之,也就是说,只要你使用了as关键字,在任何情况下都不会产生异常!
例:
    int k = 132;
    string s = k as string;//这个地方就是转换的动作了
    Console.WriteLine(s);//这里将输出:  
                                       换了一行而已啦~

记住as的使用方法:变量 as 类型
“变量”是你要进行转换的变量
“as”是进行转换的关键字
“类型”是你要将变量转换成的类型
使用这个转换式如果转换成功,会返回一个“类型”的变量
    如果转换失败,则会返回null

也许现在你不太理解as和is的作用,但是在将来,你一定会认为as和is真的是太有用了!

[此贴子已经被作者于2005-7-13 17:40:01编辑过]


搜索更多相关主题的帖子: object 整数 类型 int 
2005-06-15 21:48
au
Rank: 1
等 级:新手上路
帖 子:93
专家分:0
注 册:2005-6-9
得分:0 
非常感谢~~  又学到好东西
有没有办法直接判断出ob是什么类型吗?

2005-06-15 22:24
houyunqing
Rank: 1
等 级:新手上路
帖 子:476
专家分:0
注 册:2005-4-1
得分:0 
直接判断...不知道也(应该没有,C#我不了解的地方应该是非常之少的)

寻求挑战,追求完美 Oh,my god!
2005-06-16 06:30
幻风幻云
Rank: 1
等 级:新手上路
帖 子:762
专家分:0
注 册:2005-1-14
得分:0 
好东西要收藏

2005-06-20 20:38
houyunqing
Rank: 1
等 级:新手上路
帖 子:476
专家分:0
注 册:2005-4-1
得分:0 
今天自己仔细看了一下。。。好像说错了,对不起啊,第二段代码解释错误。。。你有兴趣的话自己试验一下就明白了~

寻求挑战,追求完美 Oh,my god!
2005-06-24 06:45
houyunqing
Rank: 1
等 级:新手上路
帖 子:476
专家分:0
注 册:2005-4-1
得分:0 
不知道大家喜欢这些东西么?喜欢我还可以跟你们分享一些~(尽量选些你们不知道但是很有用的东西)

寻求挑战,追求完美 Oh,my god!
2005-07-01 23:10
houyunqing
Rank: 1
等 级:新手上路
帖 子:476
专家分:0
注 册:2005-4-1
得分:0 
哎,自己顶(兄弟们也太不热心了,看帖咋就不喜欢回呢...是看不懂还是咋着?)

寻求挑战,追求完美 Oh,my god!
2005-07-03 22:25
houyunqing
Rank: 1
等 级:新手上路
帖 子:476
专家分:0
注 册:2005-4-1
得分:0 
自己顶

寻求挑战,追求完美 Oh,my god!
2005-07-10 23:14
live41
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:67
帖 子:12442
专家分:0
注 册:2004-7-22
得分:0 

斑竹不要卖瓜哦~~~

帮你顶。。。

2005-07-12 01:03
topbadbady
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2005-7-16
得分:0 
这样一个一个判断是可以的,但是有时候判断多了下来不会死人呀
2005-07-16 17:18



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-20961-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.898773 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved