as和is哪个效率更高的问题,望高手解惑!
这两个方法那个效率更高?public void DoSomething1()
{
object c2 = c1 ;
if ( c2 is Class1 )
{
Class1 c = (Class1)c2;
}
}
public void DoSomething2()
{
object c2 = c1 ;
Class1 c = c2 as Class1;
if ( c != null )
{
//其他操作.......
}
} --------------------编程问答-------------------- as不用进行两次转换,效率应该高点
c2 is Class1相当于转换了一次。
(Class1)c2;有转换了一次。 --------------------编程问答-------------------- is 和 as 的主要作用不是效率的问题。
你的第二段代码,如果c2不是class1类型的话,就会报错。
而第一段代码,不会报错。 --------------------编程问答-------------------- is 检查类型 和 转换类型 两次操作 会比 as 性能低。
C# 'is' operator performance --------------------编程问答--------------------
没报错
--------------------编程问答--------------------
object c2 =new WebClient();
CancellationTokenSource c = c2 as CancellationTokenSource;
if (c != null)
{
//其他操作.......
}
as是不会报错的 --------------------编程问答-------------------- as 和 is 用法都不一样 --------------------编程问答--------------------
做了一个小实验,可以看出as的效率要高一点。
不过值得注意的是:
as才是类型转换
is是类型判断,和类型转换无关。
Class1 c = (Class1)c2;
Class1 c = c2 as Class1;
这两种才是类型转换 --------------------编程问答--------------------
LS属于正常系测试,差距不是很大。
但是这个异常系测试差距就明显了。
可以看出用as还是很有又是的。
补充:.NET技术 , C#