马上加入IBC程序猿 各种源码随意下,各种教程随便看! 注册 每日签到 加入编程讨论群

C#教程 ASP.NET教程 C#视频教程程序源码享受不尽 C#技术求助 ASP.NET技术求助

【源码下载】 社群合作 申请版主 程序开发 【远程协助】 每天乐一乐 每日签到 【承接外包项目】 面试-葵花宝典下载

官方一群:

官方二群:

c#中IS和AS的区别

  [复制链接]
查看4379 | 回复4 | 2016-11-21 09:44:12 | 显示全部楼层 |阅读模式
在C#中,is是用来判断类型A能否转化为类型B,一般用来作有继承关系的父类与子类是否可以相互转化的判断。
而as是将类型A转化为类型B,一般也是用来做子类与父类的转换。

如下面的例子,我们声明三个类


class A
{ }

class B : A
{ }

class C
{ }

可以看到,类B是由类A继承来的。而C是一个独立的类。下面我们利用is与as来做测试。
[C#] 纯文本查看 复制代码
class Program
{
public static void Main()
{
B b = new B();
if (b is A)
{
Console.WriteLine(true);
}
else
{
Console.WriteLine(false);
}
}
}




打印的结果为true,说明b类可以转换为A类,但b类并没有转化为A类。

再看下面的例子:
[C#] 纯文本查看 复制代码
class Program
{
public static void Main()
{
B b = new B();
A a = b as A;
if (a != null)
{
Console.WriteLine(true);
}
else
{
Console.WriteLine(false);
}
}
}


打印结果为true,这也说明b类可以转换为A类,而且已经将类b转化为了A类型。
注意:既使b类不可以转换为A类,使用is做判断的时候,是可以通过编译的,也不会抛出异常,只是会给出提示。而使用as是会报错的,即通不过编译

C#论坛 www.ibcibc.com IBC编程社区
C#
C#论坛
IBC编程社区
ibcadmin | 2016-11-21 09:45:29 | 显示全部楼层
111
C#论坛 www.ibcibc.com IBC编程社区
C#
C#论坛
IBC编程社区
Amy尾巴 | 2016-11-21 09:47:18 | 显示全部楼层
板凳
剑弑 | 2016-11-21 09:49:03 | 显示全部楼层
地板
即墨还雀 | 2016-11-21 10:01:58 | 显示全部楼层
火钳
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则