声明个 object[] param = new object[9]; 
object数组,
param[0] = model.AC0534.ToString();
这样加.ToString()是不是就不涉及到装箱了??

解决方案 »

  1.   

    首先,装箱 obiect本来就不用ToString。 多此一举。
    其次
    装箱 是值类型到 object 类型或到此值类型所实现的任何接口类型的隐式转换。我个人认为,不管加不加tostring,都是装箱 。
      

  2.   

    装箱 拆箱 是指 值类型 和 引用类型 之间的转换。 AC0534 是值类型? 
    另外 如果是值类型的 .ToString() 也是装箱,因为值类型本身没有实现 .ToString() 方法。
    要先装箱成引用类型。http://www.cnblogs.com/vwxyzh/archive/2011/03/29/1999215.html
      

  3.   

    不是的,你看看你的数据类型 还是object,就是说,
    tostring()完后,再进行装箱处理,
    所以tostring()可以处掉的,没有任何作用
      

  4.   

    ToString() 完以后,就不会涉及装箱拆箱的问题了,装箱拆箱只发生在值类型和引用类型之间转换时。至于数据类型是 object,那不过是简单的多态而已,你把这个 object 调用 GetType 方法看看,他会显示这个 object 的类型是 string,而不是 object
      

  5.   


    如果不ToString可以不可以?这跟装箱没有关系,你自己纠结于术语上了。比如说它原本是string,那么你写 (string)model.AC0534 就是最直截了当无需计算的了。反之如果你确实是明确地要计算string,才应该用ToString。
      

  6.   

    这里的问题其实涉及到的是稀里糊涂地使用弱类型的问题,也就是编程和设计素养问题。基本上如果可能装箱,那么你声明为object,就必然要装箱。但是与你这种弱类型相比,就好象一个不拘小节的人跟一个变性人相比,装箱问题已经算是小节,你的弱类型胡乱塞object风格才是最藏污纳垢的大问题。
      

  7.   

    是在不清楚去用ILDASM反编译下,看看哪里Box(装箱)了