string str1 = "God damn it";
string str2 = str1.Clone().ToString(); 
string str3 = string.Copy(str1);Console.WriteLine(str1==str2);
Console.WriteLine(str1==str3);Console.WriteLine(str1.Equals(str2));
Console.WriteLine(str1.Equals(str3));这三个都打印出同样的内容,但为什么用"=="和string.Equals()比较都输出"true"呢?文档上说
Clone()和Copy()是有区别的, Copy创建的是一个不同的对象只是内容相同呀

解决方案 »

  1.   

    string是特殊的类,记住就行乐
      

  2.   

    String.equal()比较的是字符串的值
      

  3.   

    String Clone 只是克隆就是相同的结构,而Copy是复制过来。我是这么理解的。
      

  4.   

    clone 是传递一个引用,相当于创建了一个指向原字符串的一个指针,copy是复制一个对象。
      

  5.   

    有意思的是
    ------------------------------
    string str1 = "1";
    string str2 = "1";
    Console.WriteLine(str1.Equals(str2));
    输出:true
    ------------------------------
    string str1 = "1";
    string str2 = "2";
    Console.WriteLine(str1.Equals(str2));
    输出:flase
     难道是编译器对程序优化的结果?