string s1 = "abc";
string s2 = Copy(s1);
这个是将"abc"复制到新的内存空间,然后将地址给s2
string s1 = "abc";
string s2 = s1;
这个只是将s2指向"abc"不知道对不对:)还请高手指教!

解决方案 »

  1.   

    The Copy method does not free memory, but it allocates extra memory to accommodate the elements copied to the array
    CHStringArray a1, a2;
    int idx, size;a1.Add( L"String 1" );
    a1.Add( L"String 2" );
    a2.Add( L"String 5" );size = a1.GetSize();
    for (idx=0; idx<size; idx++)
       printf("[%d]: %S\n", idx, a1[idx]);a1.Copy(a2);
    size = a1.GetSize();
    for (idx=0; idx<size; idx++)
       printf("[%d]: %S\n", idx, a1[idx]);
      

  2.   

    事实上Copy()是移动字节
    而”=“是运算符号!
      

  3.   

    大家讨论的这么热烈,在下愚昧,敢问string s2 = Copy(s1);中,Copy从何二来,不要告诉我这是自己写的一个函数。
    ----------------------------------------------
          I like to teach a fish how to swim.
      

  4.   

    Copy是System.String类中的一个方法.如果没有看过去查一下吧@_@共同学习  共同研究------------------------------
      祝大家好好学习  天天向向
      

  5.   

    第一种方法是将s1的值复制到s2中,改变s1的值不会影响到s2的值
    第二种方法是将s1的地址传到s2中,改变s1的值则会更改s2的值
      

  6.   

    从内存操作上,两者是一致的。我们知道,在C#中分值类型和引用类型。值类型“通常”存放在栈stack中,引用类型存放在堆heap中。但是string有些特别,是值类型,但是存放在堆heap中。以上两个操作都是要另外开辟一块堆heap的空间来存放s2,实际上没有什么区别。
    ------------------------------------------------
        I like to teach a fish how to swim.
      

  7.   

    >> string s2 = Copy(s1);
    >> string s2 = s1;
    这语法,我差点也要问TheAres(喜欢教鱼游泳)一样的问题。:)String.Copy的确创建了一个新的string对象,但是由于string是immutable的,这个函数应该在一般编程当中没有什么用。
    = 的符值使得两个引用指向同一个String对象。
      

  8.   

    同意:第一种方法是将s1的值复制到s2中,改变s1的值不会影响到s2的值
    第二种方法是将s1的地址传到s2中,改变s1的值则会更改s2的值##########################################################           舟遥遥以轻扬 风飘飘而吹衣##########################################################