C#中,String 类型的是值引用还是类型引用?我现在在看帮助,它说是类型引用,越看越糊涂啊。既然是类型引用,你说以下代码的结果返回值 是什么?
            string a="a" ; 
   string b = "b";
   b = a;
   a ="aa";
           return b 
在DELPHI中,如果是引用类型的话,那么赋值过去的就是一个地址了,而不是值了。 既然string 是一个引用类型,那么,它的特殊性在那里???百思不得其解啊。请教各位大虾了。

解决方案 »

  1.   

    string在.net中是引用类型,不过是经常特别处理的.
    在给值过程只是拷贝,并不是引用的.
    你那个代码应该返回"a"
      

  2.   

    http://www.somade.com/是个很专业的技术社区,去那里找找吧,或许有你要的答案~
      

  3.   

    http://community.csdn.net/Expert/topic/3285/3285753.xml?temp=.9521601
    ps;这种问题,一搜索就有很多阿,别偷懒哦。
      

  4.   

    STRING是引用类型,但是操作起来象值类型
      

  5.   

    string a="a" ;  //在GC堆上分配一个对象O1,保存“a”,把它的引用赋值给a。O1的引用计数为1 
    string b = "b"; //在GC堆上分配一个对象O2,保存“b”,把它的引用赋值给b。O2的引用计数为1
    b = a;          //把a指向的对象(O1)的引用赋值给b,此时a和b同时指向O1。O1的引用计数为2。O2引用计数为0,等待GC回收
    a ="aa";        //在GC堆上分配一个对象O3,保存"aa",把它的引用赋值给a。 O1的引用计数为1。O3的引用计数为1
    return b        //返回O1的引用,如果该引用被返回值接收的话,O1的引用计数为1。返回后a超出作用域,自动失去引用,O3的引用计数为0,等待GC回收