string str1 = "abc";
string str2 = "abc";
Console.WtriteLine(str1 == str2);听说是引用类型,可是上面的语句,为什么输出的是true?还有,string和String有什么区别?

解决方案 »

  1.   

    听说是引用类型,可是上面的语句,为什么输出的是true? 
    因为string类重写了== 运算符.
    还有,string和String有什么区别?一样的,没任何区别
      

  2.   

    string是应用类型,两个string类型的数据比较的时候,默认自动地比较应用内存地址处的数据值
      

  3.   

    string str1 = "abc"; 
    string str2 = "abc"; 
    Console.WtriteLine(str1 == str2); 听说是引用类型,可是上面的语句,为什么输出的是true? //2个常量比较.....
    还有,string和String有什么区别?
    一个是值类型。
    一个是引用类型只不过String类型有很多静态的方法另外ps一下
    没有默哀3分钟
      

  4.   

    string 是引用类型,之所以你的两个string 比较的结果一致的原因是,在内存中相同的常量字符串,只创建一个.你第一次使用"abc"字符串时,虚拟机在内存堆中给你分配了一"abc"常量字串,可是第二次使用时,他不再给你分配,直接使用原来分配的那一个,所以你的两个string 指的是同一对象.string 和String 之间的区别和int和Int32一样.
      

  5.   

    知错还是好桶子...string是引用类型...但是它是特殊的引用类型...比较两个字符串不是比较两个对象而是比较它们的值...实际上比较的是两个string的值的副本...
    这些问题都可以在MSDN中找到答案...多看MSDN...
      

  6.   

    string是引用类型,但是工作起来像值类型,这源于它特殊的实现方式
      

  7.   

    引用类型,因为string s = null;是正确的。
      

  8.   

    1.是引用类型2."abc"="abc";
    是因为String.Equels方法被重写了 他会按照当前线程的语言设置 做一个比较
    而不是比较引用地址
      

  9.   

    string就是String的别名,没有区别
    string是引用类型,==返回true,是因为string类重写了操作符==,让它返回的两个字符串内容的比较
      

  10.   

    不同的语言有不同的用法 
    在Java中要分清楚   == 操作符 和quals 的有区别 
    但是在C#中 没有区别  string 是值类型 String  是引用类型 
    你可以自己测试一下嘛  
      

  11.   

    看来CSDN很多人基础都没有打扎实啊1。string 是 类System.String 的别名,所以它们是相同的在使用string前
    相当于在代码文件中做了如下声明
    using System.String = string;其实我们自己也可以这样用
    using MyNameSpace.MyClass = ccccc;2。string 或者说 System.String 是引用类型
    虽然说 string 是引用类型,但它看上去更像是值类型
    因为一点:string 不可改变,string一旦改变,会立刻生成另一个string
    看下面的代码 就一共生成了2个string对象
    string s1 = string.Empty;
    s1 = "wfyfngu";3。操作符重载
      

  12.   

    在使用string前 
    相当于在代码文件中做了如下声明 
    using System.String = string; 
    //这个,你说反了吧
      

  13.   

    csdn连载图书《你必须知道的.Net》第8章对string有详细解释。
    http://book.csdn.net/bookfiles/684/10068421451.shtml
      

  14.   

    string是引用类型。但是这是字符串驻留你明白吗?
      

  15.   


    string str1 = "abc"; 
    string str2 = "abc"; 
    引用类型,都是指向"abc"的那块内存地址。
    若是用new的话,地址则会不同。
      

  16.   

    引用类型 但是string 等于 char[];
      

  17.   


    从这里学会一种方法,而不是一点string的东西,多看看msdn
      

  18.   

    你好,你在默哀时间发帖是很不对的
    string 是一个特殊的引用类型,它的特殊之处就是你所问的
      

  19.   

    string str1 = "abc"; 
    string str2 = "abc"; 
    Console.WtriteLine(str1 == str2); 听说是引用类型,可是上面的语句,为什么输出的是true? 

    string 是引用类型.
    str1 == str2 表示两个sting进行比较运算,结果自然是true,这跟比较的两个操作类型
    没有直接联系,只要这两个操作数类型支持相应的运算符方法还有,string和String有什么区别?string 是表示,声明(字符串)类型的关键字
    String 则是表示(字符串)类 ,是类就可能包括公共方法,字段等,
      

  20.   

    ls已经有很多正确解答了,但是lz想进一步了解的话,直接看string的源代码是最快的。另外Effective C#对这个问题也有很详细的说明
    Item 9: Understand the Relationships Among ReferenceEquals (), static Equals(), instance Equals (), and operator== 
      

  21.   

    string 类型表示 Unicode 字符的字符串。string 是 .NET Framework 中的 String 的别名。字符串是不可变的 - 字符串对象一旦创建,其内容就不能更改。尽管 string 是引用类型,但定义相等运算符(== 和 !=)是为了比较 string 对象(而不是引用)的值。这使得对字符串相等性的测试更为直观。
    而String是一个类.
      

  22.   

    lz已经认错了...而你连那个时间都不清楚怎么回事...比lz更丢脸!ps:这么简单的问题竟然有很多人回答错...都不看书吗?