关于C#中使用is和as操作符来转型

过去对于这还不是怎么了解,今天自己细细的读了这方面的书。所以写个博客分享下吧。

在C#语言中进行类型转换的另一种方式是使用is操作符,is检查一个对象是否兼容指定的类型,并且返回一个boolean值,要注意的地方就是is操作符永远不会抛出异常。它的用法呢就是诸如这样:

1
2
3
4
if(o is Student){
       Student stu = (Student)o;
 
}

在这段代码中中CLR实际会检查两次对象的类型,is操作符首先先核实o是否兼容于Student类型,如果是,那么在if语句内部执行转型时,CLR再次核实o是否引用一个Student。可话又说回来了,CLR在这是增强了安全性,但是,无疑对性能造成了一定的影响,。这是因为CLR首先必须判断变量0引用的对象的实际类型,之后CLR必须遍历层次结构。但是在C#中还提供了as操作符。其目的就是简化这种代码的写法,同时呢,也提高了性能

1
2
3
4
5
Student stu = o as Student;
if(stu != null){
       //you code here 
 
}

as操作符永远也不会抛出一个异常,如果不能转型则结果就是一个null,正确的做法就是检查最终生成的应用是否为null

参考:CLR Via C#

posted @   strucoder  阅读(193)  评论(0编辑  收藏  举报
编辑推荐:
· 如果单表数据量大,只能考虑分库分表吗?
· 一文彻底搞懂 MCP:AI 大模型的标准化工具箱
· 电商平台中订单未支付过期如何实现自动关单?
· 用 .NET NativeAOT 构建完全 distroless 的静态链接应用
· 为什么构造函数需要尽可能的简单
阅读排行:
· Google发布A2A开源协议:“MCP+A2A”成未来标配?
· C# 多项目打包时如何将项目引用转为包依赖
· 一款让 Everything 更加如虎添翼的 .NET 开源辅助工具!
· 如果单表数据量大,只能考虑分库分表吗?
· 在Winform开发框架支持多种数据库基础上,增加对国产数据库人大金仓的支持
点击右上角即可分享
微信分享提示