none
在将一个string变量作为实参传入一个形参类型object的方法时是否会进行装箱?如果是请问为什么?

    问题

  • 例如:

    我将变量string a传入方法void test(object b){...}的b,变量a是否会进行装箱进入堆中呢?抑或是不需要装箱直接引用呢?

    我理解中string作为一个引用变量,在传入一个形参为引用变量的方法时,是不需要装箱的。

    然而我看书本中有个例子说到一个string对象和一个int对象传入一个形参为object的方法时都要装箱,是书本疏忽还是我理解有误呢?

    2016年8月24日 13:00

答案

  • string不会装箱,因为string是引用类型

    int变成object会装箱,因为是值类型装箱为引用类型是。

    可以用反编译工具(ildasm,.net reflector,ILSpy)查看程序集的IL代码,可验证自己的理解是否正解,看IL代码是否有装箱代码。


    专注于.NET ERP/CRM开发框架,C/S架构,SQL Server + ORM(LLBL Gen Pro) + Infragistics WinForms

    2016年8月24日 13:53

全部回复

  • string不会装箱,因为string是引用类型

    int变成object会装箱,因为是值类型装箱为引用类型是。

    可以用反编译工具(ildasm,.net reflector,ILSpy)查看程序集的IL代码,可验证自己的理解是否正解,看IL代码是否有装箱代码。


    专注于.NET ERP/CRM开发框架,C/S架构,SQL Server + ORM(LLBL Gen Pro) + Infragistics WinForms

    2016年8月24日 13:53
  • 谢谢,一直没用过反编译工具,看来要好好研究一下了
    2016年8月25日 11:18