1。为什么装箱折箱消耗资源,并降低应用程序性能。
2。DOTNET为什么要如此实现装箱折箱
3。如果正确利用装箱和折箱. 希望有人帮助下 谢谢~

解决方案 »

  1.   

    1,2. .net所有的类型都来源自一个对象,如object对象,也就是说任何的对象之间是可以产生关系(如转换)的. 在.net是用box和unbox.
    你可以想象,这是个多么美妙的事.3.对,认识的这点很重要.除了认识显性的装拆箱,还特别要注意隐性的.原则,用你的好办法去使你的代码减少装拆箱的次数,特别是装箱.用到了就去想办法.祝你好运!!
      

  2.   

    对于经常使用的primitive类型,如果使用类的实例来表示,那么性能会大大降低,如ada,而且语义有错误,例如两个实例都是5的int class值相同而实例并不相同。所以,对于这些类型,使用结构并且.net做了优化。这就带来一个问题,如何将这些结构与从object派生统一起来。object是类,于是将这些结构boxing成类,不但需要创建一个新的实例,而且将值copy到堆上,还要在实例中保存原值的地址,供unboxing使用。创建结构的corinfo_class_struct信息,创建可能实例信息。。由于GC的引用特性,每次object引用同一值对象都会boxing一个对象,由于类实例语义上与值类型的区别,多个同值的值对象对应多个boxing对象。这样的话,想快也难。