社区
C#
帖子详情
类型转换 (ClassName) 与 as ClassName 有什么不同,那个效率更高
yidichaxiang
2009-09-16 10:21:03
类型转换 (ClassName) 与 as ClassName 有什么不同,那个效率更高
如:
Hashtable tempHashTableA = (Hashtable)Application["valueList"];
Hashtable tempHashTableB = Application["valueList"] as Hashtable;
...全文
225
9
打赏
收藏
类型转换 (ClassName) 与 as ClassName 有什么不同,那个效率更高
类型转换 (ClassName) 与 as ClassName 有什么不同,那个效率更高 如: Hashtable tempHashTableA = (Hashtable)Application["valueList"]; Hashtable tempHashTableB = Application["valueList"] as Hashtable;
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
danjiewu
2009-09-16
打赏
举报
回复
Hashtable tempHashTableB = Application["valueList"] as Hashtable;
等价于
Hashtable tempHashTableB = Application["valueList"] is Hashtable? (Hashtable)Application["valueList"] : null;
wuyq11
2009-09-16
打赏
举报
回复
强制转换运算符
类型转换失败会抛出异常InvalidCastException
只要类型转换成立,null值不会抛出异常
as类型转换运算符
永远不会抛出异常
输入null值或者转换失败都会返回null
当需要转换对象的类型属于转换目标类型或者转换目标类型的派生类型的时候,
那么此转换操作才能成功,而且并不产生新的对象。
因此用as来进行类型转换使安全的
还有typeof()等
阿非
2009-09-16
打赏
举报
回复
is 与 as 两个关键字都是 .net 2.0 里新增的
推荐使用 as 代替 强制类型转换,因为强转 如果类型不一致 会报错,
而 as 关键字则不会,会返回null,所以 as 关键字只能应用于 引用类型对象。
is 是判断左右两边的类型是否一致 与 as 在某些场景 会有交错,但 两者各有特点,不建议替换。
----------------------------------------
object o = GetFromCache("A_KEY");
EmployeeInfo employee = o as EmployeeInfo;
if(employee != null) {
// TODO: 代码
}
这个写法的意思是 不判断类型 直接强制转换 ,然后判断是否为null
如果 只是想知道是否是某种类型的话 ,使用is 要比 as 效率高
TTOJJ
2009-09-16
打赏
举报
回复
Microsoft Visual C++.NET技术内幕(第6版)中明确说到"尽量使用as而不是强制转换"
fengjian_428
2009-09-16
打赏
举报
回复
[Quote=引用 4 楼 yidichaxiang 的回复:]
注: Application["valueList"] 传入时,就是hashtable,
所以 我在 .net 2.0 中 还未遇到报错。
在【PK贴】大家晒下C#开发代码的小技巧啊!
http://topic.csdn.net/u/20090804/16/3f463808-00ff-479b-b07d-20751534e77c.html?56933
中看到
1. 使用as,而非is
object o = GetFromCache("A_KEY");
EmployeeInfo employee = o as EmployeeInfo;
if(employee != null) {
// TODO: 代码
}
所以 is 的判断 ,价值大吗?
[/Quote]
如果不需要转型 只是想判断类型就用is咯
yidichaxiang
2009-09-16
打赏
举报
回复
注: Application["valueList"] 传入时,就是hashtable,
所以 我在 .net 2.0 中 还未遇到报错。
在【PK贴】大家晒下C#开发代码的小技巧啊!
http://topic.csdn.net/u/20090804/16/3f463808-00ff-479b-b07d-20751534e77c.html?56933
中看到
1. 使用as,而非is
object o = GetFromCache("A_KEY");
EmployeeInfo employee = o as EmployeeInfo;
if(employee != null) {
// TODO: 代码
}
所以 is 的判断 ,价值大吗?
ztenv
2009-09-16
打赏
举报
回复
一个调用()一个调用as,没有什么区别,在调用之前最好用is先判断一下
fengjian_428
2009-09-16
打赏
举报
回复
http://msdn.microsoft.com/zh-cn/library/cc488006.aspx
as要好些
wdzr_826
2009-09-16
打赏
举报
回复
Hashtable tempHashTableA = (Hashtable)Application["valueList"];
这个会报错
Hashtable tempHashTableB = Application["valueList"] as Hashtable;
不会报错
第二个要优于第一个,更安全,更有效率
C++面向对象编程核心:构造函数、多态与内存管理深度解析
面向对象编程(OOP)是一种基于对象和类的编程范式,通过封装、继承和多态三大特性实现代码复用和模块化设计。其核心原理在于将数据与操作数据的方法绑定,通过类定义对象的蓝图,实例化后形成具有状态和行为的独立实体。在C++中,OOP的技术价值体现在构建大型复杂系统时的可维护性和扩展性,特别是在游戏开发、操作系统、高性能计算等场景中广泛应用。本文聚焦于C++面向对象编程中的关键细节,深入探讨构造函数的重载与委托、虚函数表(vtable)机制以及继承体系下的资源管理,帮助开发者掌握这些易混淆但至关重要的知识点,从而编
Unity游戏开发:基于NPOI的Excel配置表自动化生成方案
在游戏开发中,配置表是管理角色属性、道具数据等海量结构化信息的核心工具。其基本原理是将数据与代码分离,通过外部文件(如Excel)存储,运行时动态加载,从而避免硬编码带来的频繁编译问题。这项技术的核心价值在于提升团队协作
效率
与数据维护的准确性,尤其适用于需要策划与程序频繁协作调整数据的项目。通过自动化工具链,可以定义数据Schema并自动生成强类型的C#数据类和加载代码,将策划维护的Excel源文件与程序使用的接口清晰解耦。应用场景广泛覆盖游戏开发中的各类数据驱动模块。本文以Unity引擎为例,详细阐述了如
Il2CppDumper-win-v6.7.46:Unity il2cpp逆向与符号还原实战
在Unity游戏逆向工程中,il2cpp编译机制将C#代码转换为原生机器码,导致符号信息丢失,逆向分析难度大幅增加。Il2CppDumper作为一款专业工具,通过解析global-metadata.dat和原生库文件,能够还原类名、方法名、字段及方法地址等关键符号信息,生成可读的dump.cs和IDA脚本。该工具在游戏安全评估、外挂分析、协议还原等场景中具有重要技术价值,帮助安全研究人员快速定位关键代码逻辑。本文以Il2CppDumper-win-v6.7.46为例,详细讲解从文件准备、参数配置到脚本落地的
C++构造函数重载:原理、实现与最佳实践详解
在面向对象编程中,构造函数是对象初始化的核心机制,负责为新生对象分配资源并设置初始状态。其基本原理是通过与类同名的特殊成员函数,在对象创建时自动调用,完成内存分配和成员初始化。这一机制的技术价值在于保证了对象的有效性和一致性,是封装和数据隐藏的基石。在实际应用场景中,对象往往需要以多种形态被创建,例如根据
不同
的参数组合进行初始化,这就需要借助构造函数重载技术。构造函数重载作为函数重载在构造函数上的应用,允许在同一个类中定义多个同名构造函数,通过
不同
的参数列表来区分,编译器根据调用时提供的实参进行重载决议,自
小米8抓包TikTok失败?Frida脚本绕过SSL Pinning与代理检测实战
在移动应用安全分析与数据调试领域,抓包是获取网络请求数据的基础技术。其核心原理是通过代理服务器拦截并解析应用与服务器之间的通信流量,从而实现对API接口、数据结构和业务逻辑的分析。然而,随着应用安全防护的升级,SSL Pinning(证书绑定)和代理检测等机制成为主要技术障碍,它们通过验证服务端证书的合法性和检测系统代理设置,有效阻止了常规抓包工具的解密与拦截。这凸显了动态代码插桩技术的工程价值,它允许在应用运行时修改其内存与行为逻辑。Frida作为一款强大的动态插桩框架,在此类应用场景中发挥着关键作用,通
C#
111,128
社区成员
642,536
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章