3.C#知识点:is和as
程序员文章站
2022-06-27 22:51:16
IS和AS 都是用于类型转换的操作。 但是这两个有什么区别呢? 简单的来说 is 判断成立则返回True,反之返回false。as 成立则返回要转换的对象,不成立则返回Null。 下面掏一手代码来说明一下。 有一点我要强调一下就是子类可以转换父类,但是父类不能转换为子类,这就比如现在这个社会。你父母 ......
IS和AS 都是用于类型转换的操作。
但是这两个有什么区别呢?
简单的来说 is 判断成立则返回True,反之返回false。as 成立则返回要转换的对象,不成立则返回Null。
下面掏一手代码来说明一下。
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace IsAndAsTest { class Program { static void Main(string[] args) { object child = new Child(); bool b1 = (child is Father); bool b2 = (child is Mother); Console.WriteLine(b1);//返回true Console.WriteLine(b2);//返回false Console.ReadKey(); } } public class Father { } public class Child:Father { } public class Mother { } }
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace IsAndAsTest { class Program { static void Main(string[] args) { object child = new Child(); //bool b1 = (child is Father); //bool b2 = (child is Mother); //Console.WriteLine(b1);//返回true //Console.WriteLine(b2);//返回false //Console.ReadKey(); Father f1 = child as Father;//可以得到转换成功,得到对象 Mother m1 = child as Mother;//转换失败,m1的值为null } } public class Father { } public class Child:Father { } public class Mother { } }
有一点我要强调一下就是子类可以转换父类,但是父类不能转换为子类,这就比如现在这个社会。你父母的东西是你的,但是你的东西还是你的一样。
Father F2 = new Father(); Child C1 = (Child)F2;
第二句代码转换的时候就会失败了。因为父类不能强转换为子类。Father不能转换为Child,但是我们如果用As进行转换的话为得到一个null的c1对象。
总结
由他们返回值就可以简单的知道他们的用法。
is 主要用于类型推断,而不需要实际的转换。
as 主要用于真正的类型转换。
上一篇: 配置动态NAT地址转换
下一篇: 详解TCP建立连接全过程
推荐阅读
-
Android编程实现网络图片查看器和网页源码查看器实例
-
Java8新特性之深入解析日期和时间_动力节点Java学院整理
-
python代码 if not x: 和 if x is not None: 和 if not x is None:使用介绍
-
教你用Python脚本快速为iOS10生成图标和截屏
-
PHP动态地创建属性和方法, 对象的复制, 对象的比较,加载指定的文件,自动加载类文件,命名空间
-
Python 使用requests模块发送GET和POST请求的实现代码
-
php面向对象编程self和static的区别
-
mysql通过my.cnf修改默认字符集为utf-8的方法和注意事项
-
Mysql索引的类型和优缺点详解
-
谷歌Pixel 3系列手机新壁纸曝光 将在10月9日于美国和欧洲发布