社区
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;
...全文
157
9
打赏
收藏
类型转换 (ClassName) 与 as ClassName 有什么不同,那个效率更高
类型转换 (ClassName) 与 as ClassName 有什么不同,那个效率更高 如: Hashtable tempHashTableA = (Hashtable)Application["valueList"]; Hashtable tempHashTableB = Application["valueList"] as Hashtable;
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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;
不会报错
第二个要优于第一个,更安全,更有效率
「深入浅出」实现JSX的转换
由于近期在看React框架源码、底层实现方面的知识,所以想把学习心得整理出来。这也是一个新的系列「从0实现React 18核心模块」的第一篇。...JSX 有什么优势,它的转换规则是什么或者它内部是如何实现的?
TypeError: Object of type ‘float32‘ is n ot JSON serializable
在尝试将包含f1oat32类型数据的对象序列化为JSON格式时,JSON库无法直接处理这种类型。...另外,如果您经常需要处理这类数据转换问题,也可以考虑使用像Pandas这样的库,它提供了
更高
级的数据处理和转换功能。
react源码解析-jsx转换为ast树及渲染
知其然才能对一些性能优化,写代码的时候才能考虑得更充分,将react的利用率达到
更高
,对代码的质量及项目的架构也会有更好的认识。 jsx转换ast树 babel识别jsx语法 babel在这里具体怎么将jsx转换为react的...
as3
效率
提升
无论对于那一种程序,好的算法总是非常重要的,而且能够极大地提高程序性能,所以任何性能的优化第一步就是从算法或者说程序逻辑的优化开始,检查自己的程序是否有多余的运算,是否在没有必要的时候做了无用功,往往...
从 Visual Basic 6.0 到 Visual Basic.NET 的转换
将 Variant 数据类型变为 Object因此以下代码:Dim x As Variant 升级后将变为:Dim x As Object Integer 和 LongVisual Basic 6.0 Long 变量存储为带有符号的 32 位数字,而 Integer 变量存储为 16 位数字。...
C#
111,094
社区成员
642,554
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章