一个“强制转换”的例子引发的思考:
 1浅析“强制类型转换”带来的性能分析及其解决方法using System;
 2浅析“强制类型转换”带来的性能分析及其解决方法class Fruit
 3

在C Sharp语言中,进行强制类型转换的另外一种方式是is操作符。is操作符检测一个对象是否兼容于指定的类型,并返回一个Bool值。请注意:我在MSDN中查过资料,说明is操作符永远不会抛出异常,从而增加了代码执行的安全性。如下面例子:
 1浅析“强制类型转换”带来的性能分析及其解决方法using System;
 2浅析“强制类型转换”带来的性能分析及其解决方法class Fruit
 3

输入结果是:1,因为f对象输入Fruit类,如果直接调用Console.WriteLine(f.i)会出现编译错误,为了能够调用Apple类里面的pubilc型 int i,需要强制类型转换,这里if语句中的条件起一个判断作用,道理很简单,这里我理解is相当于"包含之意",因为Apple:Fruit,所以需要一个转换过程,Apple a=(Apple)f;然后在输出。写到这里,问题来了,细心研究的朋友会发现CLR在执行if语句的时候,会两次类型检测,从安全性来说,没有问题,但是从性能来说,就有问题了,如果这种情况多次发生,或者说多次转换,性能问题......有没有解决的办法了?答案是有的。经过我仔细查阅MSDN上面的资料,我们可以用as操作符解决。代码如下:
1浅析“强制类型转换”带来的性能分析及其解决方法Fruit f=new Apple();
2浅析“强制类型转换”带来的性能分析及其解决方法Apple a=as Apple;
3浅析“强制类型转换”带来的性能分析及其解决方法if(a!=null)
4
说明:as操作符跟is一样都是返回一个Bool值,一个对象得引用。区别在于as操作符只进行一次对象的引用,并且速度比is操作符快很多,所以性能大大提高。

相关文章:

  • 2021-06-14
  • 2022-12-23
  • 2022-12-23
  • 2021-12-09
  • 2021-10-21
  • 2021-06-29
  • 2022-12-23
猜你喜欢
  • 2021-12-28
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-14
相关资源
相似解决方案