当前位置:编程学习 > C#/ASP.NET >>

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 --------------------编程问答--------------------
引用 2 楼 mjp1234airen4385 的回复:
is 和 as 的主要作用不是效率的问题。

你的第二段代码,如果c2不是class1类型的话,就会报错。
而第一段代码,不会报错。


没报错 

  object c2 =new  WebClient();
            CancellationTokenSource c = c2 as CancellationTokenSource;
            if (c != null)
            {
                //其他操作.......
            }
--------------------编程问答--------------------
引用 2 楼 mjp1234airen4385 的回复:
is 和 as 的主要作用不是效率的问题。

你的第二段代码,如果c2不是class1类型的话,就会报错。
而第一段代码,不会报错。


as是不会报错的 --------------------编程问答-------------------- as 和 is 用法都不一样 --------------------编程问答--------------------
做了一个小实验,可以看出as的效率要高一点。
不过值得注意的是:
as才是类型转换
is是类型判断,和类型转换无关。
Class1 c = (Class1)c2;
Class1 c = c2 as Class1;
这两种才是类型转换 --------------------编程问答--------------------
LS属于正常系测试,差距不是很大。
但是这个异常系测试差距就明显了。
可以看出用as还是很有又是的。
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,