A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 张翠花 于 2014-1-23 13:52 编辑

c#中as操作符的用法是怎样的?与is操作符有什么区别么?

评分

参与人数 1技术分 +1 收起 理由
茹化肖 + 1

查看全部评分

3 个回复

倒序浏览
c# 中 is和as 操作符是用来进行强制类型转换的
    is : 检查一个对象是否兼容于其他指定的类型,并返回一个Bool值,永远不会抛出异常。
    as:与强制类型转换是一样的,但是永远不会抛出异常,即如果转换不成功,会返回null

评分

参与人数 1技术分 +1 收起 理由
茹化肖 + 1

查看全部评分

回复 使用道具 举报
//////////////////////////////////////////////////////////////////////////////////////
Chinese ch =new Chinese();
//隐式转换,把子类变量赋给父类变量
Person p = ch;
//显示转换,把父类变量值赋值给子类变量
Person p = new Chinese();
Chinese ch = (Chinese)p;
//如果对象不在同一个继承树路径上则不能强制类型转换
Dog g = new Dog();
Chinese ch =(Chinese)g;//错误
//is 运算
if(p is Chinese)
{
    Console.WriteLIne("中国人“);
}
else if(p is Korean)
{
    Console.WriteLine("韩国人");
}


///////////////////////////////////////////////////////////////////////////////////////////////////
//as运算符
Chinese ch = p as Chinese;
if(ch!=null)
{
      Console.WriteLine("中国人");
}
Korean ch= p as Korean;
if(ch!=null)
{
     Console.WriteLine("韩国人”);
}

评分

参与人数 1技术分 +1 收起 理由
茹化肖 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 沈可 于 2014-1-22 15:04 编辑

强制类型装换:as是将类型转换,不成功返回null;is是判断类型是否能够装换,返回bool类型值

评分

参与人数 1技术分 +1 收起 理由
茹化肖 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马