初学C#,很多概念搞的我很混有几个问题,有懂的朋友不吝赐教啊=。=
1:装拆箱:string是对象类型,那么是不是意味着string a = "123";"123"值类型,a对象,所以有装箱操作?
2:泛型:List<string> a=new List<string>();
                 a.add("abc");
泛型实现给LIST定义了数据类型,就意味着可以避免装箱操作?但是LIST的数据类型是string呢?string不本身就是引用类型吗?...
3:堆栈:栈和堆的实际地址分别是什么地方?堆是内存?栈呢?网上有说栈的大小WINDOWS系统是固定值,那么物理上在什么地方的呢?

解决方案 »

  1.   

    1.只有值对象才可能发生装拆箱...string是引用类型,不会有装箱操作...2.是...参见1...3.都是内存...这些都是基础,多看看书看看MSDN...
      

  2.   

    string是个特殊的咚咚!所以装箱:将值类型转换为引用类型,反之为拆箱。泛型是为了解决装拆箱所引起的性能问题而出现的,是.net2.0的特性。内存里面,他们都只是内存的分区。
      

  3.   

    在v.net1.1之前,任何至类型被放入到ArrayList的对象中,都会引发一次装箱操作,但在v.net2.0就
    推出了泛型后,就不会发生这些问题了.
    关于装箱就是值类型从堆栈被复制到堆上,而拆箱放之。